2012-12-11 22 views
0

我在GAE上有一個處理表單的httpservlet。 表單有一個按鈕。 在servlet中,我使用apache.commons.fileupload處理單個文件上傳, 但我不知道如何處理多個文件數組......任何幫助表示讚賞。如何在java gae中處理html5輸入多個

形式:

<form id="fileupload" action="/Save" method="Post" enctype="multipart/form-data"> 
    <input name="title" type=text /> 
    <textarea name="info"></textarea> 
    <input type="file" name="files[]" multiple> 
    <input id="save" type="submit" value="Save this"> 
</form> 

的Servlet:

FileItemIterator iter = upload.getItemIterator(req); 
while (iter.hasNext()) { 
    FileItemStream item = iter.next(); 
    String name = item.getFieldName(); 
    InputStream stream = item.openStream(); 
    if (item.isFormField()) { 
     System.out.println("Form field " + name + " with value " 
      + Streams.asString(stream) + " detected."); 
    } else { 
     // name here will be "files[]" 
     System.out.println("File field " + name + " with file name " 
     + item.getName() + " detected."); 
     //MY NONWORKING ATTEMPT AT HANDLING THE FILES[] ARRAY: <- this is my question, how to do this? 
     Object files[] = Streams.copy(stream); 
     for(int i = 0; i < files.size(); i++){ 
      String fileType = files[i].getContentType(); 
      Blob imageBlob = new Blob(Files[i]); 
     } 
    } 
} 

回答

0

你正試圖從一個FileItemStream得到所有文件,而實際上每個FileItemStream是它自己的文件。

// INSERT THIS INSTEAD OF YOUR NONWORKING PART 
String filename = item.getName(); 
String contentType = item.getContentType(); 
int len; 
byte[] buffer = new byte[8192]; 
while ((len = stream.read(buffer, 0, buffer.length)) != -1) 
    // here save the buffer to blobstore 
} 

有關將數據保存到blobstore的信息,請參閱use new Files API to save into blobstore

相關問題