Montag, 29. November 2010

Tomahawk: inputFileUpload

Java Server Faces: 2.0.3
Tomahawk 1.1.10 für JSF 2.0

Um Files angenehm hochladen zu können habe ich mal den Tag inputFileUpload aus der Tomahawk Bibliothek ausprobiert.

Dazu das xhtml File:


    
    
  

Zu beachten ist, das die Form den enctype braucht, sonst funkt es nicht.

Da die Bean:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.myfaces.custom.fileupload.UploadedFile;

public class FileUploadBean {
 private UploadedFile upFile;
 FileOutputStream out;
 InputStream stream;

 public FileUploadBean() {
 }

 public UploadedFile getUpFile() {
  return upFile;
 }

 public void setUpFile(UploadedFile upFile) {
  this.upFile = upFile;
 }

 public String upload() throws IOException {
  try {
   stream = upFile.getInputStream();
   long size = upFile.getSize();
   byte[] buffer = new byte[(int) size];
   stream.read(buffer, 0, (int) size);
   out = new FileOutputStream("/path/to/your/dir/testfile.jpg");
   out.write(buffer);
   System.out.println("Erfolgreicher Upload");
   return "ok";
  } catch (Exception ioe) {
   System.out.println("Upload gescheitert");
   return "no";
  } finally {
   if (stream != null) {
    stream.close();
   }
   if (out != null) {
    out.close();
   }
  }
 }
}


Tomahawk braucht noch einen Eintrag in das web.xml:


 
  Extensions Filter
  org.apache.myfaces.webapp.filter.ExtensionsFilter
  
   uploadMaxFileSize100m
  
   uploadThresholdSize100k
  
   
   Set the path where the intermediary files will be stored.
        
   uploadRepositoryPath/temp
 
 
  Extensions Filter
  Faces Servlet
 


Weiters darf man natürlich nicht vergessen das Bean in der faces-config.xml als ManagedBean zu registrieren.

Links:
Beispiel für inputFileUpload auf roseindia.net
Beispiel für inputFileUpload von balusc
Tomahawk Homepage

Keine Kommentare:

Kommentar veröffentlichen