Ich lade eine Datei mit XMLHttprequest hoch. Hier ist die JS-Funktion, lädt dass eine Datei:Hochladen einer Datei mit XMLHttprequest - Fehlende Grenze in 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);
}
Auf der Serverseite, in upload.php ich die Datei auf diese Weise lesen:
file_put_contents($filename, (file_get_contents('php://input')));
Alles funktioniert gut, außer dass Ich bekomme eine PHP-Warnung:
Missing boundary in multipart/form-data POST data in Unknown on line 0
. Wenn ich diese Zeile entferne: xhr.setRequestHeader("Content-Type", "multipart/form-data");
verschwindet die Warnung.
Was sollte das Problem hier sein?
Verwenden Sie als Inhaltstyp 'application/x-www-form-urlencoded'. Oder lassen Sie es aus, da dies der Standardinhaltstyp ist, der von einer Ajax-Anfrage gesendet wird. –
Dies kann funktionieren, aber für große Dateien (sogar 5-600 KB) wird der Browser einfrieren, weil er die Datei in einem "Text" -Format senden muss. Ich muss die 'multipart/form data' verwenden. –
Sorry, habe das Datei-Upload-Bit übersehen (weiß nicht wie), aber [ich denke, das könnte deine Frage beantworten] (http://stackoverflow.com/questions/5933949/how-to-send-multipart-form- data-form-content-by-ajax-no-jquery), genauer gesagt: 'xhr.setRequestHeader (" Inhaltstyp "," multipart/form-data; Zeichensatz = utf-8; boundary = "+ Math.random () .toString(). substr (2)); 'sollte den Trick machen –