File-Upload mit Form-Taglibs

Aus APF Wiki [de]

Wechseln zu: Navigation, Suche

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.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
menü
misc
Werkzeuge