2016-09-20 40 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);