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尚不清楚。 –