【发布时间】:2016-04-05 13:51:22
【问题描述】:
我有一个现有的 html 表单,一旦用户选择图像文件,它就会将文件上传到服务器。
我做过类似的事情。
//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 数组似乎是空的。我为$_POST 做了一个print_r,它给了Array()。我做错了什么?
【问题讨论】:
-
您知道文件上传在
$_FILES,而不是$_POST,对吗? -
是的,那也是空的……
-
您不需要设置 content-type,因为 XHR 应该会自动检测到您已附加文件并使用
multipart/form-data。而且 php 也不理解 content-typeimage这就是为什么你什么也得不到 -
我这样粗心的错误。你是对的。
标签: javascript php form-data