1UnitedPower: Doppelte Dateiuploads

Beitrag lesen

Hakuna matata!

Du lädst alle Dateien doppelt hoch:

var formdaten = new FormData(document.upload);
var fileList = document.getElementById("fileupload").files;
for(var i =0; i < fileList.length; i++) {
var file = fileList[i];
formdaten.append("datei"+i, file);
}

  
Durch den Konstruktor FormData() werden schon Einträge für alle Dateien erzeugt. Durch die append()-Methode erzeugst du für jede Datei einen weiteren Eintrag.  
  

> Das PHP-Script prüft, ob das Verzeichnis und die Berechtigung noch vorhanden ist.  
>   
> ~~~php
  

> 	$anz_uploads = sizeof($_FILES) -1;  
>   
> 	if (file_exists("/upload/files/") && is_writable("/upload/files/")) {  
> 		for ($i = 0; $i < $anz_uploads; $i++) {  
> 			$xdatei = "datei".$i;  
> 			$name = basename($_FILES[$xdatei]['name']);  
> 			$dateiname = "/upload/files/".$name;  
> 			$tmpname = $_FILES[$xdatei]['tmp_name'];  
> 			$erfolg = move_uploaded_file($tmpname, $dateiname);  
> 			if (!$erfolg) {  
> 				echo "Warning! Datei wurde nicht korrekt hochgeladen!";  
> 			}  
> 		}  
> 

Damit ist auch klar, warum dieser PHP-Code nicht funktioniert. Nur die Hälfte der hochgeladenen Dateien hat Namen die der Form "datei".$i entsprechen. Nämlich nur solche, die du mit der append()-Methode so angehangen hast. Die erste Hälfte der Dateien hat Namen, die dem Formular-Element entsprechen, also "fileupload".

--
“All right, then, I'll go to hell.” – Huck Finn