• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] einfaches upload script ohne Jquery

psygonis

New member
Ich habe ein ganz simples php Script. Das erzeugt ein <Input type='file' ….
Das liegt in einem Form. Im Form ist auch noch ein Button, der das Ajax Script aufruft. Diese lädt dann die Form Daten, die Daten des file feldes und gibt die an ein weiteres PHP Script zur Auswertung. Es gibt keine Fehlermeldungen, weder im PHO noch an der Konsole. Alles läuft durch, das Auswertungs PHP funktioniert auch. Nur die $_FILES Variable ist leer.
Es kommt einfach nichts an. Hier das Ajax Script. Fehlt das was?
Code:
Code:
Ich habe ein ganz simples php Script. Das erzeugt ein <Input type='file' ….
Das liegt in einem Form. Im Form ist auch noch ein Button, der das Ajax Script aufruft. Diese lädt dann die Form Daten, die Daten des file feldes und gibt die an ein weiteres PHP Script zur Auswertung. Es gibt keine Fehlermeldungen, weder im PHO noch an der Konsole. Alles läuft durch, das Auswertungs PHP funktioniert auch. Nur die $_FILES Variable ist leer.
Es kommt einfach nichts an. Hier das Ajax Script. Fehlt das was?


Code:
function AJAX_Multiform_Post(formId, name, table, openArray, fileID, fileName, functionNames){
  //formId           id des Forms, welches das <input type='file' ......... > feld enthält
  //name             derzeit wegen dem Test nicht in Verwendung
  //table            derzeit wegen dem Test nicht in Verwendung
  //openArray        derzeit wegen dem Test nicht in Verwendung
  //fileID           ID des file feldes
  //fileName         Name des file feldes 
  //functionNames    javascript funktion für für ausgabe response und weiterverarbeitung 

  var url = document.getElementById(formId).action;                                                           //URL, zum php Script, wird aus dem action tag vom Form geholt
  var form = document.getElementById(formId);                                                                 //URL, zum php Script, wird aus dem action tag vom Form geholt
  var elem = document.getElementById(formId).elements;                                                        //liest alle Form Felder aus (für spätere Verwendung)

  url += "?test=sdfhdsvbjsdfgb";                                                                              //Test zur Überprüfung, ob die URL überhaupt richtig angesprochen wird

  var fileData;
  var data = new FormData();                                                                                  //DataForm Object initialisieren (erst ab IE 10 verfügbar)

  fileData = window.document.getElementById(fileID).files[0];
  data.append(fileName, fileData);

  xmlhttp4.onload = function(){if(typeof window[functionNames] == 'function') window[functionNames]();}
  xmlhttp4.onerror = xmlhttp4Error;
  xmlhttp4.open("POST", url, true);                                                                           //Form an URL senden
  xmlhttp4.setRequestHeader("Content-type", form.enctype);                                                       //enctype festlegen, damit auch Bilddaten übertragen werden
  xmlhttp4.send(data);                                                                                        //Bild-Daten versenden

  return false;
  }
Auch die Funktion bei xmlhttp4.onload wird gestartet. Die bekommt den Response des Auswertungsscriptes. Es läuft also alles ohne Meldungen durch. Nur, es kommt nix an. Namen und ID`s stimmen auch.

Auch die Auswertung ist ganz simpel:

Code:
$back = "Upload<br>File Array<br><pre>".print_r($_FILES, true)."</pre><br>Post Array<br><pre>".print_r($_POST, true);
$back .= "</pre><br>Request Array<br><pre>".print_r($_REQUEST, true)."</pre>";
echo $back;

Ich erhalte das:

Code:
Upload<br>File Array<br><pre>Array
(
)
</pre><br>Post Array<br><pre>Array
(
)
</pre><br>Request Array<br><pre>Array
(
    [test] => sdfhdsvbjsdfgb
)
</pre>

Wo ist mein Fehler? Wieso kommt da nix an? Das FormData Objekt müsste doch per Post wenigstens die Values des file Feldes, also den gewählten Bildnamen übersenden.
 
Code:
  ...
  var form = document.getElementById(formId);
  url += "?test=sdfhdsvbjsdfgb";

  var data = new FormData(form);

  xmlhttp4.onload = function(){if(typeof window[functionNames] == 'function') window[functionNames]();}
  xmlhttp4.onerror = xmlhttp4Error;
  xmlhttp4.open("POST", url, true);                                                                           //Form an URL senden
  xmlhttp4.send(data);                                                                                        //Bild-Daten versenden

  return false;
  }
 
Zurück
Oben