Я создаю базовый веб-интерфейс для загрузки файлов, и моя кнопка успешно отправляет запрос POST с полезной нагрузкой, содержащей данные изображения, но в сценарии php массив $ _FILES пуст.Я использовал инструменты разработчика Chrome, чтобы проверить мой HTML и JavaScript, но ошибок нет.Также я проверил журнал ошибок apache, и там также не было ошибок, поэтому я немного растерялся из-за того, что идет не так.
Я следовал этому примеру и немного его изменил.
https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications#Example_Uploading_a_user-selected_file
Вот html и javascript
<html>
<head>
Image Uploader
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<h1> Upload Your Images Here </h1>
<input type="file" id="fileElem" style="display:none" onchange="handleFiles(this.files)">
<button id="fileSelect"> Select some files </button>
<script>
$("#fileSelect").click(function()
{
$("#fileElem").click();
});
function handleFiles(image)
{
console.log("Handling Files");
var reader = new FileReader();
var xhr = new XMLHttpRequest();
xhr.open("POST", "getImage.php");
xhr.overrideMimeType('text/plain; charset=x-user-defined-binary');
reader.onload = function(evt)
{
xhr.send(evt.target.result);
console.log("sent");
};
reader.readAsBinaryString(image[0]);
}
</script>
</body>
</html>
Вот скрипт php.
<?php
print_r($_FILES);
print_r($_POST);
print(count($_FILES));
echo "Reached End";
?>
Это ответ Iвернуться из сценария.Он просто показывает пустые массивы.
Array
(
)
Array
(
)
0Reached End
Я пробовал разные типы файлов и каждый раз получал один и тот же пустой массив.Я удостоверился, что загрузка файлов включена в php.ini, а ограничения размера сообщений и файлов достаточно высоки (80 МБ).Если это помогает, я запускаю сервер apache2 с установленным php 7.0 на Raspberry Pi.
Я также проверил журнал ошибок apache, но ошибок нет.