2016-09-20 86 views
0

我正在使用Apache CXF以JAVA編寫Web服務。如何將附件對象轉換爲JAVA中的ByteArray

所以,我有它的原型如下的方法:

public Response upload(@Multipart("id") int Id, 
      @Multipart("file") Attachment attachment) { 

現在,我想這個附件爲byte []轉換。我該怎麼做?

+0

你婉的attachemt的內容讀取到字節數組,或者要序列呢?請澄清你的問題,因爲它,你問 –

+0

最後,我不得不將其存儲在數據庫中的BLOB尚不清楚。 –

回答

1

這裏是你如何閱讀附件的內容,並將其存儲一個字節數組中。或者,您可以直接寫入OutputStream並跳過轉換爲byte[]

 DataHandler dataHandler = attachment.getDataHandler(); 
     final byte[] data; 
     try (InputStream inputStream = dataHandler.getInputStream()) { 
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
      final byte[] buffer = new byte[4096]; 
      for (int read = inputStream.read(buffer); read > 0; read = inputStream.read(buffer)) { 
       outputStream.write(buffer, 0, read); 
      } 
      data = outputStream.toByteArray(); 
     } 

     //todo write data to BLOB 

如果您希望提高內存效率或者如果附件不適合內存,您可以直接寫入blob的輸出流。只需更換ByteArrayOutputStreamOutputStream outputStream = blob.setBinaryStream(1);