Heim > Web-Frontend > js-Tutorial > Hauptteil

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

Mary-Kate Olsen
Freigeben: 2024-10-18 16:40:29
Original
187 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!