[英]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警告:
Missing boundary in multipart/form-data POST data in Unknown on line 0
。
如果我刪除這一行: 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中測試過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.