我使用XMLHttprequest上傳文件。 這裏是JS功能,將文件上載:使用XMLHttprequest上傳文件 - 缺少multipart/form-data中的邊界
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請求發送的默認內容類型。 –
這可以工作,但對於大文件(甚至5-600 KB),瀏覽器將凍結,因爲它必須以「文本」格式發送文件。我必須使用'multipart/form data'。 –
對不起,忽略了文件上傳位(不知道如何),但[我認爲這可能會回答你的queston](http://stackoverflow.com/questions/5933949/how-to-send-multipart-form-更具體地說:''xhr.setRequestHeader(「content-type」,「multipart/form-data; charset = utf-8; boundary =」+ Math.random(data-form-content-by-ajax-no-jquery) ).toString()。substr(2));'應該訣竅 –