如何在 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);