PHP 4.3

11.2.4 Mehrere Dateien laden

Wenn Sie den Besuchern der Website aus Komfortgründen ermöglichen möchten, in einem HTML-Formular mehrere Dateien für den Upload auf einen Server auszuwählen, können Sie dies durch eine recht einfache Variation des Formularskripts realisieren. Indem Sie die Eingabefelder als Arrayfelder deklarieren, werden die Informationen zu den hochgeladenen Dateien in einem Array abgelegt und können zur Verarbeitung in einfacher Weise angesprochen werden:

Beispielskript Formular für Upload mehrerer Dateien

      
<form enctype="multipart/form-data" action="beispiel.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="10000">   
Datei 1:<br> 
<input type="File" name="userfile[]" size="25" maxlength="255"><br><br>
Zielpfad 1:<br>
<input type="Text" name="zielpfad[]" size="25" maxlength="255"><br><br>
Zielname 1:<br>
<input type="Text" name="zielname[]" size="25" maxlength="255"><br><br>
Datei 2:<br>
<input type="File" name="userfile[]" size="25" maxlength="255"><br><br>
Zielpfad 2:<br>
<input type="Text" name="zielpfad[]" size="25" maxlength="255"><br><br>   
Zielname 2:<br>   
<input type="Text" name="zielname[]" size="25" maxlength="255"><br><br>   
Datei 3:<br>   
<input type="File" name="userfile[]" size="25" maxlength="255"><br><br>   
Zielpfad 3:<br>   
<input type="Text" name="zielpfad[]" size="25" maxlength="255"><br><br>   
Zielname 3:<br>   
<input type="Text" name="zielname[]" size="25" maxlength="255"><br><br>   
<input type="Submit" value="Dateien absenden">   
</form>  

Die Verarbeitung mehrerer Dateien könnte mit der im folgenden Beispiel dargestellten for-Schleife erfolgen:

Beispielskript Verarbeitung mehrerer gleichzeitiger Uploads
<?php

  for ($i = 0; $i < count($HTTP_POST_FILES["userfile"]["tmp_name"]); $i++) {
    if (is_uploaded_file($HTTP_POST_FILES["userfile"]["tmp_name"][$i])) {
      $datei_pfad = $HTTP_POST_VARS["zielpfad"][$i] . "/" . $HTTP_POST_VARS["zielname"][$i];
      $datei_in = @fopen($HTTP_POST_FILES["userfile"]["tmp_name"][$i], "r");
      $datei_out = @fopen($datei_pfad, "w");
      $datei_temp = fread($datei_in, $HTTP_POST_FILES["userfile"]["size"][$i]);
      fwrite($datei_out, $datei_temp, $HTTP_POST_FILES["userfile"]["size"][$i]);
       fclose($datei_in);
       fclose($datei_out);
    }
  }

?>

Kommentare (0)

Ihr Kommentar

Name