我正在使用 Apache CXF 在 JAVA 中编写 Web 服务。
所以,我有一个方法,其原型(prototype)如下:
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 - 如何在JAVA中将附件对象转换为ByteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601003/