Heim  >  Artikel  >  Web-Frontend  >  Wie behebe ich den Fehler „Keine mehrteilige Grenze“ beim Hochladen von Ajax XMLHttpRequest-Dateien?

Wie behebe ich den Fehler „Keine mehrteilige Grenze“ beim Hochladen von Ajax XMLHttpRequest-Dateien?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-18 16:40:29189Durchsuche

How to Resolve the

Dateien mit Ajax XMLHttpRequest hochladen: Fehler „No Multipart Boundary“ beheben

Beim Versuch, Dateien mit XMLHttpRequest hochzuladen, kann es vorkommen, dass das Problem auftritt Fehler „Die Anfrage wurde abgelehnt, da keine mehrteilige Grenze gefunden wurde“. Um dieses Problem zu beheben, untersuchen wir den bereitgestellten Code und identifizieren die möglichen Ursachen.

Der folgende Codeausschnitt soll eine Datei mit XMLHttpRequest hochladen:

<code class="javascript">var url = "http://localhost:80/...";
$(document).ready(function(){
    document.getElementById('upload').addEventListener('change', function(e) {
        var file = this.files[0];
        var xhr = new XMLHttpRequest();
        // xhr.file = file; // not necessary if you create scopes like this
        xhr.addEventListener('progress', function(e) {
            var done = e.position || e.loaded, total = e.totalSize || e.total;
            console.log('xhr progress: ' + (Math.floor(done/total*1000)/10) + '%');
        }, false);
        if ( xhr.upload ) {
            xhr.upload.onprogress = function(e) {
                var done = e.position || e.loaded, total = e.totalSize || e.total;
                console.log('xhr.upload progress: ' + done + ' / ' + total + ' = ' + (Math.floor(done/total*1000)/10) + '%');
            };
        }
        xhr.onreadystatechange = function(e) {
            if ( 4 == this.readyState ) {
                console.log(['xhr upload complete', e]);
            }
        };
        xhr.open('post', url, true);
        xhr.setRequestHeader("Content-Type", "multipart/form-data");
        xhr.send(file);
    }, false);
});</code>

Um den oben genannten Fehler zu beheben , müssen zwei wichtige Punkte angesprochen werden:

  1. Die Zeile xhr.file = file; ist überflüssig und unnötig. Es ist nicht erforderlich, das Dateiobjekt auf diese Weise anzuhängen.
  2. Das eigentliche Problem liegt in der Zeile xhr.send(file). Um die Datei korrekt hochzuladen, muss sie in ein FormData-Objekt eingeschlossen werden, das sie in ein Multipart/Form-Data-POST-Datenobjekt formatiert. Der aktualisierte Code sollte wie folgt aussehen:
<code class="javascript">...
var formData = new FormData();
formData.append("thefile", file);
xhr.send(formData);
...</code>

Durch das Erstellen eines FormData-Objekts und das Anhängen der Datei stellen Sie sicher, dass die Daten korrekt strukturiert und für die Verarbeitung auf dem Server bereit sind. Auf die Datei kann nun in $_FILES['thefile'] zugegriffen werden (wenn Sie PHP auf der Serverseite verwenden), sodass Sie sie ordnungsgemäß verarbeiten können.

Bezugnahme auf Dokumentationsressourcen wie MDC- und Mozilla-Demos kann bei solchen Problemen wertvolle Hinweise geben.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Keine mehrteilige Grenze“ beim Hochladen von Ajax XMLHttpRequest-Dateien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn