Ich entwickle ein einfaches Skript zum Hochladen einer Datei über AJAX, aber nach dem Senden des Formulars ist die Variable $ _FILES vollständig leer, obwohl die Datei in der Eingabe von php: // vorhanden ist, aber es gibt keine einfache Möglichkeit, nur die Datei zu extrahieren. Kennt jemand den Grund und / oder die Lösung für dieses Problem?
Ich habe alle gängigen Lösungen überprüft. enctype = "multipart / form-data" -Rechte für temporäre Ordner-Form-Tags, die doppelte Anführungszeichen und die Ausgabe der Dateieingabe in JS schließen
Nichts hat mein Problem gelöst.
ROT Dies ist KEINE Abfrage, und ich habe seit 24 Stunden kein Duplikat gefunden. Bitte nicht als Duplikat markieren, es sei denn, Sie sind sich sicher, dass es eines ist.
HTML
<form action="upload.php" method="POST" enctype="multipart/form-data" id="testf">
<input type="file" name="file" accept=".jpg">
<input type="submit" value="Skicka">
</form>
JavaScript
let data = document.querySelector("#testf");
data.onsubmit = function() {
var http = new XMLHttpRequest();
http.open("upload.php", data.action);
http.onreadystatechange = function () {
console.log(http.response);
}
http.setRequestHeader("Content-type", data.enctype);
http.send(new FormData(data));
event.preventDefault();
return false;
}
PHP
<?php
var_dump($_FILES);
?>
Dies sollte den Inhalt meiner Datei aber drucken
array(0) {}
ist alles was ich bekomme. Nutzlast anfordern ist:
------WebKitFormBoundaryZVGq8suqFUUSFDtW
Content-Disposition: form-data; name="file"; filename="david.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryZVGq8suqFUUSFDtW--
Sie haben ein Problem mit Ihrer JavaScript-Methode XMLHttpReqest. Es werden mindestens zwei Parameter benötigt: Methode und URL. Vollständige Parameter sind: Methode, URL, Async, Benutzer, Passwort
Ändern Sie Ihren Code von:
http.open("upload.php", data.action);
Zu:
http.open("post", data.action );
Update: Auch entfernen
http.setRequestHeader("content-type", "multipart/form-data")
Formulardaten legen bereits ihre Überschriften für den Inhaltstyp fest.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen