Programmer's Reference Guide
| Zend_File |
Zend_File_Transfer
Zend_File_Transfer ermöglicht es Entwicklern die Kontrolle über Dateiuploads sowie über
Dateidownloads zu erhalten. Es erlaubt die Verwendung von eingebuaten Prüfungen für Dateizwecke und
gibt sogar die Möglichkeit Dateien mit Filtern zu verändern. Zend_File_Transfer arbeitet
mit Adaptern welche es erlauben die selbe API für unterschiedliche Transportprotokolle wie HTTP, FTP,
WEBDAV und andere zu verwenden.
Hinweis: Einschränkungen
Die aktuelle Implementation vonZend_File_Transferdie in 1.6.0 ausgeliefert wird, ist auf HTTP Post Uploads limitiert. Downloaden von Dateien und andere Adapter werden in einem kommenden Release hinzugefügt. Nicht implementierte Methoden werfen eine Ausnahme. Deswegen sollte aktuell eine Instanz vonZend_File_Transfer_Adapter_Httpdirekt verwendet werden. Das wird sich in Zukunft ändern, sobald mehrere Adapter vorhanden sind.
Die Verwendung von Zend_File_Transfer ist recht einfach. Es besteht aus zwei Teilen.
Dem HTTP Formular das den Upload durchführt, und der Behandlung der hochgeladenen Dateien mit
Zend_File_Transfer. Siehe das folgende Beispiel:
Beispiel #1 Einfaches File-Upload Formular
Dieses Beispiel zeigt einen einfachen Dateiupload welcher Zend_File_Transfer
verwendet. Das erste Teil ist das Dateiformular. In unserem Beispiel gibt es nur eine Datei
welche wir hochladen wollen.
<form enctype="multipart/form-data" action="/file/upload" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" />
<br />
<input type="submit" value="Upload File" />
</form>
Es ist zu beachten das der Bequemlichkeit halber Zend_Form_Element_File verwendet werden sollte statt das HTML manuell zu erstellen.
Der nächste Schritt ist die Erstellung des Empfängers des Uploads. In unserem Beispiel ist der
Empfänger /file/upload. Als nächstes erstellen wir also den Kontroller
file mit der Aktion upload.
$adapter = new Zend_File_Transfer_Adapter_Http();
$adapter->setDestination('C:\temp');
if (!$adapter->receive()) {
$messages = $adapter->getMessages();
echo implode("\n", $messages);
}
Wie man sieht besteht die einfachte Verwendung darin ein Ziel mit der setDestination
Methode zu definieren und die receive() Methode aufzurufen. Wenn irgendwelche
Uploadfehler vorhanden sind werden diese als Ausnahme zurückgegeben.
Hinweis: Achtung
Beachten Sie das das nur die einfachste Verwendung ist. Man sollte dieses Beispiel niemals in einer lebenden Umgebung einsetzen da es massive Sicherheitslücken aufweisst. Man sollte immer Prüfungen verwenden um die Sicherheit zu erhöhen.
| Zend_File |
