无法获得 _FILES 美元但获得 _SERVER 美元的文件
Unable to get file in $_FILES but getting in $_SERVER
(按照SO的要求澄清为什么我的问题没有与建议的帖子重复)
恕我直言,我的问题与该问题不重复,因为
- 我正在起诉JavaScript和Ajax,其中链接的问题没有
- 虽然我已经尝试了该帖子的解决方案,但 不起作用
我正在使用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
https://i.stack.imgur.com/1GMdh.png
的尖叫声带有$_FILES
https://i.stack.imgur.com/IECUt.png 的输出的屏幕截图
谢谢,我不想要jquery建议(我认为在它开发的框架之前了解语言是件好事:)
您正在发送原始文件数据。您不会发送multipart/form-data
编码的请求,因此不会将其作为常规表单数据处理(因此不会填充$_FILES
和$_POST
)。
创建表单数据对象。
var formData = new FormData();
将文件信息放入其中:
formData.append("myFile", inputFile.files[0]);
发送该:
request.send(formData);
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法获得 _FILES 美元但获得 _SERVER 美元的文件
- 美元http.Post到PHP文件,500内部服务器错误
- 美元.getJSON不能与本地JSON文件一起工作
- JS美元.Get或$.getScript传递数据到文件
- JS美元.post不加载PHP文件
- 美元.widget是一个不带blueimp的功能,jQuery文件上传断断续续
- 美元http.post文件大小限制?看起来确实是这样
- 使用美元.订阅文件javascript
- 美元.ajax发送文件格式数据和变量
- jQuery美元.发送图像文件到servlet
- 美元.getJSON与php文件
- JS美元.获取带有路径的方法文件
- jQuery美元.ajax从本地XML文件读取,在创建本地网站时不起作用