上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
Uploading a file with XMLHttprequest - Missing boundary in multipart/form-data
我正在上传一个带有XMLHttprequest的文件。这是JS函数,它上传一个文件:
var upload = function(file) {
// Create form data
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
// Open
xhr.open('POST', this.options.action);
// Set headers
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("X-File-Name", file.fileName);
xhr.setRequestHeader("X-File-Size", file.fileSize);
xhr.setRequestHeader("X-File-Type", file.type);
// Send
xhr.send(formData);
}
在服务器端,在upload.php中,我以这种方式读取文件:
file_put_contents($filename, (file_get_contents('php://input')));
一切都很好,除了我收到一个PHP警告:
CCD_ 1。
如果我删除此行:xhr.setRequestHeader("Content-Type", "multipart/form-data");
警告消失。
这里应该有什么问题?
这对我来说有点奇怪,但这就是工作原理:
// Open
xhr.open('POST', this.options.action, true);
// !!! REMOVED ALL HEADERS
// Send
xhr.send(formData);
在这种情况下,在服务器端,我不会读取通过php://input
发送的文件,但该文件将在$_FILES
数组中。
这解决了我的问题,但我仍然很好奇为什么现在文件出现在$_FILES
中?
在Chrome、Mozilla、Safari和IE10中进行了测试。
相关文章:
- 如何从pdftron webviewer获取表单数据
- JS验证ajax返回的html中的表单数据
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将单击事件添加到数据表
- 预览数据表单
- Ajax数据表单序列化防止双重提交
- 如何在 Spring Framework 中处理表数据表单提交
- 发布大型数据表单 Angular JS
- 覆盖Magento中的默认数据表单提交JS活动
- 保存不带按钮的数据表单
- 更新Highchart数据表单导出按钮
- 将数据表单转换为PDF
- 我的Angular视图没有用数据表单服务器更新
- 如何在不重新加载页面的情况下获取数据表单数据库
- JavaScript SDK返回数据表单嵌套函数
- 使用php AJAX发送数据表单请求失败
- 数据表单$scope在Angular的view (page)中不显示
- 实时交换 HTML 数据表单
- 搜索parse.com数据表单html输入
- 如何在MVC中返回JSON数据表单控制器到jsp