Hochladen von mehreren Dateien mit Pear

Wenn ich mehrere Dateien, also Bilder, hochladen möchte, dann eignet sich das HTTP/Upload Paket in Verbindung mit dem Image/Transform Paket von Pear ganz gut dafür.
HTTP/Upload muss erstmal instanziiert werden. Dabei bekommt der Konstruktor mitgeteilt in welcher Sprache er die Fehlermeldungen ausgeben soll.
Dann können wir bestimmen welchen Zugriffsmode die Dateien haben sollen. Ich habe hier mal alles gegeben was ging.
Es werden nun mit ‘$files = $upload->getFiles();’ aus dem $_FILES Array die Dateien heraus gelesen, die hochgeladen werden sollen.
$files ist jetzt ein assoziatives Array, bei dem der Feldname zum Schlüssel des Arrays geworden ist. Als nächstes wird durch dieses $files Array durchiteriert. Dabei wird geprüft, ob es auch gültige Dateien sind und wenn es so ist, werden sie in das gewünschte Verzeichnis verschoben.

Das Upload Package bietet noch eine Reihe von Möglichkeiten die Dateien zu überprüfen. Mit ‘$file->getProp();’ ohne Parameter werden alle Eigenschaften dieses Objektes in einem Array angezeigt.
Möchten wir die Dateien unter einem anderem Namen abspeichern dann können wir die Methode setName(‘neuerName’); dafür verwenden. setName kann noch zwei weitere Parameter entgegen nehmen setName(‘neuerName’ , ‘prefix_’, ‘.end’);. Die Datei würde dann ‘prefix_neuerName.end’ heissen.
Und dann sind da noch die beiden Methoden nameToSafe() und nameToUniq(). nameToSafe bekommt einen Dateinamen übergeben und konvertiert alle Sonderzeichen, die problematisch sein könnten, in ungefährliche Zeichen.
nameToUniq ist ganz praktisch wenn man verhindern möchte, dass eine vorhandene Datei durch eine neue überschrieben wird. Der Dateiname wird dabei durch eine Zufallszahl generiert.

Ging das gut können jetzt die Thumbnails erstellt werden.
Und wie das geht zeige ich beim nächsten Mal.

public function uploadPics($Suffix){

    $upload     = new HTTP_Upload('de');
    $upload->setChmod(0777);
    $files = $upload->getFiles();
    $i=0;
    chmod($this->Path, 0777);

    foreach($files as $file){
        if ($file->isValid()) {
            $moved = $file->moveTo($this->Path);
            if (!PEAR::isError($moved)) {
                $FileFeld = "file[".$i."]";
                if($file->getProp('form_name')==$FileFeld){
                    $this->createThumb($file->getProp('name'));
                    $this->Pictures[] = $file->getProp('name');
                }
            } else {
                echo $moved->getMessage();
            }
        }
        $i++;
    }

}

Leave Your Comment