File-Upload mit Form-Taglibs
Aus APF Wiki [de]
Das Thema File-Upload wurde im Release 1.12 noch einfacher gestaltet. Hierzu wurde eine Erweiterung von Thalo aufgenommen, die die hochgeladene Datei mit dem FileModel abstrahiert und über die Taglib verfügbar macht.
Inhaltsverzeichnis |
Beispiel
Hier ein Beispiel für ein Upload-Formular:
Template
<@controller namespace="test::tools::form::taglib" file="upload_controller" class="upload_controller" @> <core:addtaglib namespace="tools::form::taglib" prefix="html" class="form" /> <html:form name="upload" method="post"> <fieldset> <label for="name">Name:</label> <form:text name="name" id="name"/> <label for="image">Image:</label> <form:file name="image" id="image" accepts="jpg|image/png" maxsize="269205"/> <form:addvalidator class="MimeTypeValidator" control="image" button="send" /> <form:addvalidator class="FileSizeValidator" control="image" button="send" /> <form:button name="send" value="GO" /> </fieldset> </html:form>
Controller
import('tools::filesystem','FilesystemManager'); class upload_controller extends baseController{ public function transformContent(){ $form = &$this->__getForm('upload'); if($form->isSent() && $form->isValid()){ $name = &$form->getFormElementByName('name'); $image = &$form->getFormElementByName('image'); // upload image $file = $image->getFile(); $fileName = $file->getName(); $tmpFile = $file->getTemporaryName(); FilesystemManager::copyFile($tmpFile,'./upload/'.$fileName, true); } else{ $form->transformOnPlace(); } } }
Validatoren
Aktuell stehen zwei Validatoren zur Verfügung: MimeTypeValidator und FileSizeValidator. Der erste erwartert das Attribut "accepts" im Formular-Element, der zweite "maxsize" und "minsize". Diese definieren jeweils die erlaubten MIME-Typen und die maximal zulässige sowie die minimal erforderliche Größe.
Verfügbarkeit
Die Funktion ist mit dem Commit 830 im 1.12er Zweig des SVN verfügbar.