Задать вопрос
@les21

Как загрузить файл в yandex disk из приложения на Javascript и плагина fileupload?

Добрый день. Прошу совета у разработчиков на Javascript.
Я пробую загрузить файл, из своего приложения. Написано на Oracle mod_plsql + Javascript (JQuery). Для загрузки файлов использую плагин
jquery fileupload
который должен поддерживать cross domain загрузку
https://github.com/blueimp/jQuery-File-Upload/wiki...
Но при формировании запроса он вставляет origin, что нарушает требования api yandex disk
"Загрузка файла на полученный URLФайл следует отправить с помощью метода PUT на URL для загрузки, в течение 30 минут после получения этого URL (через 30 минут ссылка перестанет работать и ее нужно будет запросить заново).Загрузка файла в хранилище не требует OAuth-токен. Примечание. В запросе не следует указывать заголовок Origin. В общем случае на запрос с непустымOrigin API отвечает HTTP-кодом 500. "
Прошу помощи, как решить эту проблему
Сам пример (в примере немного затер часть токена)
Получаю путь
var _formData;
var formURL;
$.ajax({
url: "https://cloud-api.yandex.net/v1/disk/resources/upl...",
async: false,
dataType: "json",
type: 'get',
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'OAuth 8317f5afab3e4a0fa1610bd59d57');
},
success: function(result) {
formURL = result.href;
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status+' '+thrownError);
}

});
Запрос благополучно отработал, я получил что-то вроде
"https://uploader18h.disk.yandex.net:443/upload-tar..."

Вешаю обработчик на стандартный выбор файла

$("#yd").fileupload({
forceIframeTransport: true,
type: "PUT",
url: formURL,
beforeSend: function(xhr) {

},
done: function (e, data) {
null;
},
fail: function (e, data) {
alert(data.jqXHR.status+' '+data.errorThrown);
}
});
Но при выборе файла я получаю сообщение об ошибке

jquery-1.8.3.js:8434 OPTIONS https://uploader18h.disk.yandex.net/upload-target/...

(index):1 XMLHttpRequest cannot load https://uploader18h.disk.yandex.net/upload-target/... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'alcides.fors.ru:802' is therefore not allowed access. The response had HTTP status code 500.

Пробовал затирать origin, но это не проходит
beforeSend: function(xhr) {
xhr.setRequestHeader('Origin', formURL);
},

Ну вот и все, прошу совета как загрузить файлы в yandex disk
Спасибо
  • Вопрос задан
  • 4539 просмотров
Подписаться 1 Оценить 14 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы