(如此要求澄清为什么我的问题不与建议的帖子重复)
恕我直言,我的问题与此问题不重复,因为
我正在使用ajax并发出ajax请求我正在使用javaScript
HTML
<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建议(我认为在它开发框架之前很好地了解语言:)
答案 0 :(得分:2)
您正在发送原始文件数据。您没有发送multipart/form-data
个编码请求,因此不会将其作为常规表单数据处理(因此$_FILES
和$_POST
不会被填充)
创建表单数据对象。
var formData = new FormData();
将文件信息放在:
中formData.append("myFile", inputFile.files[0]);
发送:
request.send(formData);