$ _FILES пусто после загрузки AJAX - PullRequest
1 голос
/ 04 июля 2019

Я разрабатываю простой скрипт для загрузки файла через AJAX, но после отправки формы переменная $ _FILES полностью пуста, хотя файл существует во входе php: //, но без простого способа извлечь только файл,Кто-нибудь знает причину и / или решение этой проблемы?

Я проверил все распространенные решения.enctype = "multipart / form-data" права на теги форм временных папок, закрывающие двойные кавычки и вывод файла-ввода в JS

Ничто не решило мою проблему.

КРАСНЫЙ Это НЕ jquery, и я не нашел дубликат в течение 24 часов.Поэтому, пожалуйста, не отмечайте как дубликат, если вы не уверены, что он один.

HTML

<form action="upload.php" method="POST" enctype="multipart/form-data" id="testf">
<input type="file" name="file" accept=".jpg">
<input type="submit" value="Skicka">
</form>

JavaScript

let data = document.querySelector("#testf");
data.onsubmit = function() {
    var http = new XMLHttpRequest();
    http.open("upload.php", data.action);
    http.onreadystatechange = function () {
        console.log(http.response);
    }
    http.setRequestHeader("Content-type", data.enctype);
    http.send(new FormData(data));
    event.preventDefault();
    return false;
}

PHP

<?php
var_dump($_FILES);
?>

Это должно напечатать содержимое моего файла, но

array(0) {}

- это все, что я получаю.Полезная нагрузка запроса:

------WebKitFormBoundaryZVGq8suqFUUSFDtW
Content-Disposition: form-data; name="file"; filename="david.jpg"
Content-Type: image/jpeg


------WebKitFormBoundaryZVGq8suqFUUSFDtW--

Ответы [ 2 ]

1 голос
/ 04 июля 2019

У вас проблема с вашим методом JavaScript XMLHttpReqest. Требуется как минимум два параметра: метод и URL. Полные параметры: метод, URL, асинхронный, пользователь, пароль

Измените свой код с:

 http.open("upload.php", data.action);

Кому:

 http.open("post", data.action );

Обновление: Также удалите

http.setRequestHeader("content-type", "multipart/form-data")

Данные формы уже устанавливают свои заголовки для типа содержимого.

0 голосов
/ 04 июля 2019

Вы проверили, установлен ли предел памяти -1 или достаточно высокий в php. Иногда на сервере Apache или iis также имеется блок при высокой загрузке файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...