Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
core:helper:upload [2014/07/16 18:01] shadowcat angelegt |
core:helper:upload [2014/07/16 00:00] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Uploads ====== | ====== Uploads ====== | ||
+ | Der Upload-Helper basiert auf der class.upload.php von verot.net, die wir allerdings um die Bildbearbeitungsfunktionen bereinigt haben. (Hierzu haben wir class.Images.php zur Verfügung.) Die Handhabung von Dateiuploads wird hiermit wesentlich vereinfacht. | ||
+ | |||
+ | ===== Ausgangslage ===== | ||
+ | |||
+ | Es existiert eine Seite mit einem Dateiupload-Formular. | ||
+ | |||
+ | <WRAP center round info 100%> | ||
+ | Hier können grundsätzlich beliebig viele Dateiupload-Felder vorhanden sein, es empfiehlt sich aber, nicht zu viele Dateien auf einmal zuzulassen. Es kann sonst sein, daß die Übertragung auf den Server zu lange dauert und es dadurch zu einem Script-Timeout kommt. | ||
+ | </WRAP> | ||
+ | |||
+ | Auf der Serverseite existiert ein Script - z.B. ein Modul -, welches die Dateiuploads entgegen nimmt und weiter verarbeitet. | ||
+ | |||
+ | ===== Alle hochgeladenen Dateien speichern ===== | ||
+ | |||
+ | Hat man mehrere Upload-Felder, ist das die schnellste Variante. Die hierbei festgestellten Fehler werden hierbei in Form eines Arrays zurückgeliefert. Zusätzlich erhält man ein Boolean-Result, welches ''false'' ist, wenn es Fehler gab, ansonsten ''true''. | ||
+ | |||
+ | Codebeispiel: | ||
+ | |||
+ | <sxh php> | ||
+ | $dir = CAT_PATH.'/modules/myModule/upload'; | ||
+ | list( $ok, $errors ) = CAT_Helper_Upload::uploadAll( | ||
+ | 'files', | ||
+ | utf8_decode(CAT_Helper_Directory::sanitizePath($dir)) | ||
+ | );</sxh> | ||
+ | |||
+ | In diesem Beispiel werden alle Dateien, die über das Formular hochgeladen wurden, in das Verzeichnis ''CAT_PATH/modules/myModule/upload'' übertragen. Der Parameter ''files'' beinhaltet den Namen des Upload-Formularfeldes. | ||
+ | |||
+ | <sxh php> | ||
+ | <input type="file" name="files" id="files" /> | ||
+ | </sxh> | ||
+ | |||
+ | Die Variable ''$ok'' hat den Wert ''true'', wenn alle Dateien erfolgreich verarbeitet werden konnten. Ist dies nicht der Fall, beinhaltet ''$errors'' eine Liste der festgestellten Fehler. | ||
+ | |||
+ | Die Verwendung von ''utf8_decode()'' stellt sicher, daß Verzeichnisnamen mit Umlauten korrekt verarbeitet werden können. Es kann genau wie ''CAT_Helper_Directory::sanitizePath()'' weggelassen werden. | ||
+ | |||
+ | ===== Einzelne Datei verarbeiten ===== | ||
+ | |||
+ | Die Syntax ist in diesem Fall angelehnt an die ''class.upload.php'', welche ja auch die Basis darstellt. Kurzform: | ||
+ | |||
+ | <sxh php> | ||
+ | CAT_Helper_Upload::getInstance(<Dateiname>)->process(<Verzeichnis>); | ||
+ | </sxh> | ||
+ | |||
+ | Ein bißchen mehr Kontrollmöglichkeiten erhält man durch eine Aufteilung der Kommandos. | ||
+ | |||
+ | <sxh php> | ||
+ | // Instanz erzeugen | ||
+ | $current = CAT_Helper_Upload::getInstance($_FILES['file']); | ||
+ | // prüfen, ob die Datei tatsächlich hochgeladen wurde | ||
+ | if ( $current->uploaded ) { | ||
+ | // ok, hochgeladene Datei in das gewünschte Verzeichnis verschieben | ||
+ | $current->process(CAT_PATH.'/modules/myModule/upload'); | ||
+ | // Erfolg prüfen | ||
+ | if ( $current->processed ) | ||
+ | { | ||
+ | // ... usw. ... | ||
+ | } | ||
+ | } | ||
+ | </sxh> | ||
+ | |||
+ | Mehr Informationen sind in der Original-Dokumentation zur ''class.upload.php'' zu finden: | ||
+ | |||
+ | http://www.verot.net/php_class_upload_docs.htm | ||
+ | |||
+ | Prinzipiell gelten alle Informationen, die nichts mit Bildbearbeitung zu tun haben. |