Saturday, March 17, 2007

Upload de fichier dans un formulaire (en Java)

Apache fourni une API Java pour l'upload de fichier dans un formulaire WEB.
Elle est disponible à cette adresse :
http://jakarta.apache.org/commons/fileupload/

Voici un exemple de class Java qui utilise cet API:
http://www.micro-mind.net/files/uploadExample.java
import java.io.File;
import java.util.Iterator;
import java.util.List;
 
import javax.servlet.http.HttpServletRequest;
 
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
public class FileUpload {
      public static boolean upload(HttpServletRequest request){
   boolean result = false;
            try {
                  // Check that we have a file upload request
                  //boolean isMultipart = ServletFileUpload.isMultipartContent(request);
                  //System.out.println(isMultipart);
                  // Create a factory for disk-based file items
                  FileItemFactory factory = new DiskFileItemFactory();
                  // Create a new file upload handler
                  ServletFileUpload upload = new ServletFileUpload(factory);
                  // Parse the request
                  List items = upload.parseRequest(request);     // List  FileItem
                  Iterator iterator = items.iterator();
                  while (iterator.hasNext()) {
                        FileItem item = (FileItem) iterator.next();
                      if (item.isFormField()) {
                          processFormField(item);
                      } else {
                          processUploadedFile(item);
                      }
                      //item.write(uploadedFile);
       result = true;
                  }          
            }catch (FileUploadException fue) {
                  fue.printStackTrace();
            }catch (Throwable e) {
                  e.printStackTrace();
            }
            return result;
      }
     
      private static void processUploadedFile(FileItem item) {
            if (!item.isFormField()) {
                String fieldName = item.getFieldName();
                String fileName = item.getName();
                String contentType = item.getContentType();
                boolean isInMemory = item.isInMemory();
                long sizeInBytes = item.getSize();
                System.out.println("FILENAME\rfieldName="+fieldName+"\rfileName="+fileName+"\rcontentType"+contentType+
                        "\risInMemory="+isInMemory+"\rsizeInBytes="+sizeInBytes);
                try{
                      File uploadedFile = new File("D:/"+fileName);
                      item.write(uploadedFile);
                }catch (Exception e) {
                        e.printStackTrace();
                  }
            }
      }
 
      private static void processFormField(FileItem item) {
            if (item.isFormField()) {
                String name = item.getFieldName();
                String value = item.getString();
                System.out.println("FORMFIELD\rname="+name+"\rvalue="+value);
            }
      }
}

No comments: