У меня есть существующая форма html, которая загружает файл на сервер, как только пользователь выбирает файл изображения.Как загрузить файл с использованием чистого ванильного javascript и php?
Я сделал что-то вроде этого.
//html code
<input type="file" id="photo" name="photo" accept="image/*" />
// the usual html stuff
document.getElementById('photo').addEventListener("change",uploadImage);
function uploadImage()
{
var xhr = new XMLHttpRequest();
xhr.open("POST","/upload.php",true);
xhr.setRequestHeader("Content-type","image");
var file = document.getElementById('photo').files[0];
if(file)
{
var formdata = new FormData();
formdata.append("pic",file);
xhr.send(formdata);
}
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200)
{
//some code
}
};
}
Но в моем php-файле я не могу получить доступ к этому загруженному файлу. Массив $_POST
кажется пустым. Я сделал print_r
за $_POST
, и он дал Array()
. Что я делаю не так?
Вы знаете, что файл закачка в ' $ _FILES', а не '$ _POST', исправить? – Sean
Да, это тоже пусто ... –
Вам не нужно устанавливать тип контента, так как XHR должен автоматически обнаруживать, что вы добавили файл и используете 'multipart/form-data'. И php не понимает контент-тип 'image', либо вот почему вы ничего не получаете –