簡體   English   中英

使用XMLHttprequest上傳文件 - 在multipart / form-data中缺少邊界

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM