我正在使用XMLHttprequest上传文件。 这是上传文件的JavaScript函数:
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 警告之外,一切都正常:
Missing boundary in multipart/form-data POST data in Unknown on line 0
。
如果我删除这一行:xhr.setRequestHeader("Content-Type", "multipart/form-data");
警告就会消失。
这里可能出了什么问题呢?
application/x-www-form-urlencoded
作为内容类型。或者可以省略它,因为这是由ajax请求发送的默认内容类型。 - Elias Van Ootegemmultipart/form data
。 - Tamás Papxhr.setRequestHeader("content-type","multipart/form-data; charset=utf-8; boundary=" + Math.random().toString().substr(2));
应该可以解决问题。 - Elias Van Ootegem