(正如他所要求的,以澄清为何我的问题不重复建议的职位)
我的问题与那个问题不重复,因为
我使用ajax,为了发出ajax请求,我使用javaScript
<input id="file" type="file" name="our-file" />
<input type="button" value="Upload" id="upload-button" />
Js
var inputFile = document.getElementById("file"),
uploadButton = document.getElementById("upload-button");
uploadButton.onclick = function () {
console.log(inputFile.files[0])
var file = inputFile.files[0];
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = stateHandler;
httpRequest.open("POST", "upload.php", true);
httpRequest.setRequestHeader("X-File-Name", file.name);
httpRequest.send(file)
function stateHandler() {
var status = {
"httpRequest ready state": httpRequest.readyState,
"status": httpRequest.status,
"httpRequest responseText":httpRequest.responseText
};
console.log(status);
console.log(httpRequest.responseText);
}
}
现在,当我试图通过$_FILES
上传文件时,我得到了空数组,但是$_SERVER
有完整的文件信息,是因为我只发送了头文件本身而不是文件本身?
用$_SERVER
http://i.stack.imgur.com/1GMdh.png显示我的输出
使用$_FILES
http://i.stack.imgur.com/IECUt.png输出的屏幕截图
谢谢,我不想要jquery建议(我认为在jquery框架开发之前了解语言是件好事):
发布于 2015-03-11 09:45:09
您正在发送原始文件数据。您没有发送multipart/form-data
编码的请求,因此不会将其作为常规表单数据处理(因此不会填充$_FILES
和$_POST
)。
创建一个表单数据对象。
var formData = new FormData();
将文件信息放在:
formData.append("myFile", inputFile.files[0]);
发送:
request.send(formData);
https://stackoverflow.com/questions/28982260
复制相似问题