PHP 4.3

11.2.3 Verarbeitung der Dateien

Die angelegten temporären Dateien werden vom Server bei Beendigung des Skripts automatisch wieder gelöscht. Auch wenn dies nicht geschieht, haben Sie mit der Variablen $HTTP_POST_FILES["userfile"]["tmp_name"] bei einem späteren erneuten Aufruf des Skripts zumindest keinen Zugriff mehr darauf. Das bedeutet, dass Sie in jedem Fall Maßnahmen zur Speicherung der Daten ergreifen müssen. Dies kann wie folgt geschehen:

Beispielskript Dateiverarbeitung in Upload-Prozeduren

    <?php

      if (is_uploaded_file($HTTP_POST_FILES["userfile"]["tmp_name"])) {
*1      $datei_pfad = $HTTP_POST_VARS["zielpfad"] . "/" . $HTTP_POST_VARS["zielname"];
*2      $datei_in = fopen($HTTP_POST_FILES["userfile"]["tmp_name"], "rb");
*3      $datei_out = fopen($datei_pfad, "wb");
*4      $datei_temp = fread($datei_in, $HTTP_POST_FILES["userfile"]["size"]);
*5      fwrite($datei_out, $datei_temp, $HTTP_POST_FILES["userfile"]["size"]);
*6      fclose($datei_in);
*7      fclose($datei_out);
      }

    ?>

Zuerst wird bei Punkt *1 der Pfad und Dateiname, unter dem die Datei abgelegt werden soll, definiert (bei einem echten Skript wären hier noch einige Sicherheitsabfragen zu integrieren). Anschließend öffnet das Skript die übertragene Datei im Lese-Modus (*2) und legt gleichzeitig eine neue Datei, entsprechend dem gewünschten Namen der übertragenen Datei (siehe Dateipfad bei Punkt *1), an (*3).
Zum Auslesen des übertragenen Dateiinhalts dient die Variable $datei_temp (*4). Dabei wird der Inhalt binär gelesen. Dieser Modus wird hier grundsätzlich verwandt, da Dateien im Text-Modus dadurch in keiner Weise beeinflusst werden, Binärdaten jedoch nur mit dieser Methode gelesen werden können.
Der aufgenommene Inhalt wird sofort in der Zieldatei abgelegt (*5). Konsequenterweise wird auch hierbei wieder die Funktion fwrite() zum Schreiben binärer Daten benutzt. Abschließend werden Quell- und Zieldatei mit der Funktion fclose() geschlossen (*6 und *7).

Kommentare (0)

Ihr Kommentar

Name