0
我正在使用Apache CXF以JAVA编写Web服务。如何将附件对象转换为JAVA中的ByteArray
所以,我有它的原型如下的方法:
public Response upload(@Multipart("id") int Id,
@Multipart("file") Attachment attachment) {
现在,我想这个附件为byte []转换。我该怎么做?
我正在使用Apache CXF以JAVA编写Web服务。如何将附件对象转换为JAVA中的ByteArray
所以,我有它的原型如下的方法:
public Response upload(@Multipart("id") int Id,
@Multipart("file") Attachment attachment) {
现在,我想这个附件为byte []转换。我该怎么做?
这里是你如何阅读附件的内容,并将其存储一个字节数组中。或者,您可以直接写入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的输出流。只需更换ByteArrayOutputStream
与OutputStream outputStream = blob.setBinaryStream(1);
你婉的attachemt的内容读取到字节数组,或者要序列呢?请澄清你的问题,因为它,你问 –
最后,我不得不将其存储在数据库中的BLOB尚不清楚。 –