这让我抓狂!我无法理解为什么ajax没有将文件发送到php,有没有人能够理解?这是代码:
----- HTML -----
<input id="mmSelectedDoc" name="selectedFiles[]" type="file" multiple></input>
----- JS -----
mmSingFile = (document.getElementById("mmSelectedDoc").files)[0];
var mmFilesData = new FormData();
mmFilesData.append("selectedFiles[]", mmSingFile, encodeURIComponent(mmSingFile.name));
var x=new XMLHttpRequest();
x.onreadystatechange = function(e){
if (x.readyState==4 && x.status==200){
console.log(x.responseText);
}
}
log(mmFilesData.get("selectedFiles[]"));
x.open("POST","uploader.php", true);
x.setRequestHeader("Content-type", "multipart/form-data");
x.send(mmFilesData);
----- PHP -----
var_dump($_GET);
var_dump($_POST);
var_dump($_FILES);
die();
当我在发送之前记录mmFilesData.get(...)时,我可以看到里面有一个文件,但是登录onreadystatechange = 4只有空数组。如果我将content-type更改为application / x-www-form-urlencoded,我会从var_dump后面得到一个如下结果:
["-----------------------------172450022319283172571100694258
Content-Disposition:_form-data;_name"]=>
string(813) ""selectedFiles[]"; filename="10434360_995996657086820_5574771356675124169_n.jpg"
Content-Type: image/jpeg
��here's in ascii the file content��
发生了什么?谢谢大家!
答案 0 :(得分:0)
发送formdata对象时,不要在xhr对象上设置内容类型 不要在追加函数中编码文件名。