如何在 JAVA 中将附件对象转换为 ByteArray
How to convert Attachment Object to ByteArray in JAVA
我正在 JAVA 使用 Apache CXF 编写 Web 服务。
所以,我有一个原型如下的方法:
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);
我正在 JAVA 使用 Apache CXF 编写 Web 服务。
所以,我有一个原型如下的方法:
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);