@bdFregat

Как с помощью AJAX загрузить файл на сервер (CORS)?

Имеется фронтенд на JS и бэкенд на PHP. Находятся на разных доменах, общаются через API
Для обычных данных удалось настроить CORS, всё проходит ок.
Проблема возникает с загрузкой файлов. Сам по себе Ajax запрос проходит успешно, но файл на бэкенд не приходит.

На фронте
function upload(file) {
    var xhr = new XMLHttpRequest();
    xhr.onload = xhr.onerror = function (x) {
        console.log(x.target.response); // выводит [][][]
    };
    xhr.open("POST", "http://sitename", true);
    xhr.send(file);
 }
// висит на инпуте
function inputOnChange(e) {
    upload(e.target.files[0]);
}


На бэкенде
header('Access-Control-Allow-Origin: http://localhost:3000');
header('Access-Control-Allow-Headers: content-type');

echo json_encode($_GET);
echo json_encode($_POST);
echo json_encode($_FILES);


Все массивы пустые. Что я делаю не так?
  • Вопрос задан
  • 285 просмотров
Решения вопроса 1
@bdFregat Автор вопроса
Как всегда, стоит сформулировать вопрос, как сам находишь ответ.
Мне помог объект FormData, всё заработало.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vitalykostak
Извини что не отвечаю на твой вопрос, но в данной ситуации я бы лучше воспользовался библиотекой dropzone.js. Тоже не знал как реализовать но эта библиотека выручила
Ответ написан
Ваш ответ на вопрос

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

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