作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我是一名优秀的程序员,十分优秀!