mehrere dateien gleichzeitig uploaden - andere methode.

shorty

Erfahrenes Mitglied
Hallo,
erstmal muss ich sagen, dass ich einpaar themen zu meinem problem gefunden habe aber es war nie das, was ich gesucht habe...

ich habe mir ein skript gebastelt, bei dem man eingeben kann, wieviele bilder man hochladen möchte. nach dem drücken des formularsende button, werden die bilduploadfelder selber generiert. dazu gibt es ein neues feld, bei dem man den ordnernamen angeben kann. jetzt kann man sich die bilder aussuchen und dann auf "bilder hochladen" klicken. allerdings wird nur der ordner erstellt aber die bilder werden nicht hochgeladen.

PHP:
<?
if($m=="") {
	$m="upload_pic";
}
switch($m) {
case "upload_pic":
if($send==send) {
  	$ordner="voller pfad/$ordnername";
    mkdir("$ordner",0777);
    for($show_file=1;$show_file<($file+1);$show_file++) {
        eval ("\$fileload = \$file$show_file;");
		if(@copy($fileload,"$ordner/$fileload_name")) {
    		echo "<b>Upload beendet!</b><br>\n";
    		echo "Dateiname: $fileload_name\n";
    		echo "<br>\n";
    		echo "Dateigröße: $fileload_size Byte\n";
    		echo "<hr>\n";
    	}
  	}
} else {
if(empty($pic)) {
?>
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
 <tr>
  <td class="tablehead">Bild(er) Uploaden</td>
 </tr>
 <tr>
  <td class="firstrow">
  <form action="<? echo $PHP_SELF; ?>?m=upload_pic&pic=yes" method="post" name="upload_pic">
  Wieviele Bilder sollen geuploaded werden?<br>
  <input type="text" name="file" size="20" class="field"><br>
  <input type="submit" name="submit" value="Bilduploadfeld(er) erstellen" class="button">
  </form>
  </td>
 </tr>
</table>
<?
}
if($cat=="pic") {
?>
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
 <tr>
  <td class="tablehead">Bild(er) Uploaden</td>
 </tr>
 <tr>
  <td class="firstrow">
  <form action="<? echo $PHP_SELF; ?>" enctype="multipart/form-data" method="post" name="upload_file">
  Ordnername:<br>
  <input type="text" name="ordnername" size="40" class="field"><br><br>
  <?
  for($show_file=1;$show_file<($file+1);$show_file++) {
	  echo "BilduploadfeldNr. $show_file <input type='file' name='file$show_file' size='50' class='field'><br>\n";
  }
  ?>
  <input type="hidden" name="m" value="upload_pic">
  <input type="hidden" name="send" value="send">

  <input type="hidden" name="file" value="<? echo $file; ?>">
  <input type="hidden" name="show_file" value="<? echo $show_file; ?>">

  <input type="submit" name="submit" value="Bild(er) uploaden" class="button">
  </form>
  </td>
 </tr>
 </table>
<?
}
}
break;
}
?>

falls der code zu lang ist entschuldige ich mich dafür. das ist seit langem mein erster post und ich weiss nicht, ob das laut der board regeln verboten ist.

ansonsten bedanke ich mich schonmal im vorraus für eure hilfe.

mfg shorty
 
Zuletzt bearbeitet:
mach aus dem feldnamen ein array, dann werden dort alle dateien drin gespeichert.

also <input type="file" name="$files[]">

dann kannst du über $_FILES["files"][] alle dateien ansprechen.
 
ich habe das hier jetzt beim copy() eingefügt:
PHP:
if(@copy($fileload,"$ordner/$_FILES['file'][$show_file]")) {


und das hier als input feld namen bei der bilderauswahl:
PHP:
echo "BilduploadfeldNr. $show_file <input type='file' name='$file[$show_file]' size='50' class='field'><br>\n";

ist das so richtig?
 
soweit ich sehen kann ist showfile bei dir nur die indexnummer, richtig? wenn ja, kannst du $showfile auch weglassen und einfach nur

echo "BilduploadfeldNr. $show_file <input type='file' name='$file[]' size='50' class='field'><br>\n";

und für das auslesen eine einfache for-schleife verwenden.
 
$show_file zeigt halt nur die bilder nummer an und gleichzeitig ist es ein teil vom namen, was für den <input> verwendet wird.

habe das skript mal getestet und mir wird eine fehlermeldung ausgegeben.

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /voller pfad/upload2.php on line 11

in linie 11 steht.
if(@copy($fileload,"$ordner/$_FILES["file"][$show_file]")) {
 
if(@copy($fileload,"$ordner/$_FILES["file"][$show_file]")) { <-- anführunfszeichen bei file sind falsch, mach aus den mal nen hochkomma

if(@copy($fileload,"$ordner/$_FILES['file'][$show_file]")) {
 
wenn ich das mit hochkomma mache kommt diese fehlermeldung:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /voller pfad/upload2.php on line 11
 
Vielen dank aber mein Skript funktioniert jetzt auf andere art.

damit sollte es gehen:

PHP:
if($send==send) {
  			$ordner="$fullpath/$ordnername";
  			mkdir("$ordner",0777);
            $files = $_FILES['pics'];
			foreach ($files['name'] as $key=>$name) {
				$size = $files['size'][$key];
    			if(move_uploaded_file($files['tmp_name'][$key], $ordner . "/" . $files['name'][$key])) {
    				echo "<b>Upload beendet!</b><br>\n";
    				echo "Dateiname: $name\n";
    				echo "<br>\n";
    				echo "Dateigröße: $size Byte\n";
    				echo "<hr>\n";
    			} else {
   					echo "Beim verschieben von $name ist ein Fehler aufgetreten<br>\n";
				}
  			}
...

allerdings kann man die ordner und die bilder nicht mehr löschen, wenn man sie mal geuploadet hat :))...wer helfen kann, möge bitte hier antworten. Danke schonmal im Vorraus.
 
Zuletzt bearbeitet:
Zurück