2013-11-14 61 views
0

我有一個模型實體Image
實體有類型領域:Blob
要執行文件上傳,請使用Apache Commons FileUpload Library
爲了讓我的文件,我用下面的代碼:在DataStore中將InputStream存儲爲GAE Blob

Image image = new Image(); 
    ServletFileUpload upload = new ServletFileUpload(); 
    try { 
     FileItemIterator itr = upload.getItemIterator(req); 
     while(itr.hasNext()){ 
      FileItemStream item = itr.next(); 

      if(!item.isFormField()) 
      { 
       image.setImageType(item.getContentType()); 
       InputStream stream = item.openStream(); 
       image.setImageData(???); //How to Set Blob Data from Input Stream 
      } 
     } 
    } catch (FileUploadException e) { 
     resp.sendError(500); 
    } 

感謝。

回答

0

使用附帶的Apache共享文件上傳的Streams.copy(input, output, doClose)實用方法的InputStream複製到一個字節數組,並創建一個Blob

InputStream stream = ... 
ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
Streams.copy(stream, bytes, true /* close stream after copy */); 
Blob blob = new Blob(bytes.toByteArray()); 
image.setImageData(blob);