2017-06-13 5 views
0

Ich habe mich bemüht herauszufinden, was das Problem des Hochladens von Bildern sein kann. Versucht mehrere Wege, konnte aber in Ajax nicht erfolgreich sein. Wenn ich eine Datei ohne Ajax hochladen will, funktioniert es gut: Ich bin neu in AJAX, daher kann ein Trick fehlen.Datei-Upload über Ajax mit XMLHttpRequest

Darüber hinaus funktioniert das vollständige Formular perfekt mit Ajax, aber $ _FILES schafft ein Problem. ERROR:

Notice: Undefined index: Laden Sie in Z: \ xampp \ htdocs \ webseite \ a.php auf der Leitung 70

Was kann der Grund sein?

Ich weiß, dass es mehrere Beiträge dazu gibt, aber keine Übereinstimmung mit XMLHttpRequest.

Danke

Dies ist der Code.

HTML-Datei hat HTML-Code und Javascript/AJAX-Code. Zweite Datei: a.php hat PHP-Code.

<div class="form-group mygroup"> 
      <label for="name"> Upload (optional) </label> 
      <input type="file" class="form-control" name="Upload" id="Upload"> 

</div> 

<script> 
    var xhttp = new XMLHttpRequest(); 
     var Upload_rek=document.getElementById('Upload').value; 

     xhttp.open('GET', 'a.php?&Upload_var='+Upload_rek+'&Senden_var='+Senden_rek, true); 
     xhttp.send(); 
</script> 

<?php 
$target = "uploads/".basename($_FILES['Upload']['name']); 
?> 
+0

https://www.formget.com/ajax-image-upload-php/ –

+0

https://stackoverflow.com/questions/23980733/jquery-ajax-file-upload-php –

+0

Beide Links sind nicht passend zu meinem Code. – Nabeel

Antwort

2

Sie benötigen eine Datei anhängen mit Formdata

var formData = new FormData(); 
formData.append(file, file); 
xhr.send(formData); 

In Ihrem aktuellen Codezustand Sie nicht die Datei auf den Server an alle senden/hochladen.

+0

So ist die Verwendung von FormData der einzige Weg? Mit PhP funktioniert die gleiche Art von Code. aber nicht in Ajax. Also nach Ihrer Antwort,: mit ajax, müssen Sie FormData() – Nabeel

+0

Ja, müssen Sie die Datei an den Server senden, damit PHP in der Lage sein wird, darauf zuzugreifen. Wenn es ein Bild, eine pdf, eine Textdatei etc. ist, können Sie es vielleicht in einen Base64-String konvertieren und es als Standard-GET/POST-Wert senden, aber Sie bleiben lieber bei FormData – mele

+0

Dank für Ihre Erklärung By the way. es sieht lustiger für mich aus, dass andere Variablen perfekt mit dieser Art der Codierung funktionieren, aber Hochladen von Dateien funktioniert nicht. So gedacht, könnte etwas fehlen, aber kein Fall. Ich werde jetzt über FormData arbeiten, um dieses Problem zu überwinden .. Hope for the best :) – Nabeel