2010-08-18 91 views
1

我正在使用org.apache.commons.fileupload上傳。保存上傳的文件與GWT

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
    GWT.log("is multipart? " + Boolean.toString(isMultipart), null); 

    ServletFileUpload upload = new ServletFileUpload(); 

    try{ 
      FileItemIterator iter = upload.getItemIterator(request); 

      while (iter.hasNext()) { 
        FileItemStream item = iter.next(); 
        String name = item.getFieldName(); 
        InputStream stream = item.openStream() ; 

        /** 
        * Save th uploaded file 
        */ 

      } 
    } 
    catch(Exception e){ 
      e.printStackTrace(); 
    } 
} 

如何保存上傳的文件?

回答

2

我認爲這可以幫助你。

if (!item.isFormField()) { 
    String fieldName = item.getFieldName(); 
    String fileName = item.getName(); 
    String contentType = item.getContentType(); 
    boolean isInMemory = item.isInMemory(); 
    long sizeInBytes = item.getSize(); 

    File saveTo = new File("/file_uploads/" + fileName); 
    try { 
    item.write(saveTo); 
    ... 
    } 
    catch (Exception e){ 
    ... 
    } 

記住上傳的文件可能已經被org.apache.commons.fileupload自動保存

使用

您可以設置大小閾值要保存的文件在磁盤上或在內存中加載

// Create a factory for disk-based file items 
DiskFileItemFactory factory = new DiskFileItemFactory(); 

// Set factory constraints 
factory.setSizeThreshold(yourMaxMemorySize); 
factory.setRepository(yourTempDirectory); 

// Create a new file upload handler 
ServletFileUpload upload = new ServletFileUpload(factory); 

// Set overall request size constraint 
upload.setSizeMax(yourMaxRequestSize); 

// Parse the request 
List /* FileItem */ items = upload.parseRequest(request); 

關於org.apache.commons.fileupload的一切你需要知道的是:Using FileUpload