2016-09-20 5 views
0

Apache CXFを使用してJavaでWebサービスを作成しています。アタッチメントオブジェクトをJavaのByteArrayに変換する方法

public Response upload(@Multipart("id") int Id, 
      @Multipart("file") Attachment attachment) { 

は今、私は[]のバイトにこの添付ファイルを変換したい:

だから、私は、その原型以下れる方法があります。どうしたらいいですか?

+0

と置き換えてください。attachemtの内容をバイト配列に読み込むことはできませんか、それとも直列化したいですか?あなたの質問を明確にしてください。あなたが何を求めているのかわかりません。 –

+0

最後に、データベースにBLOBとして格納する必要があります。 –

答えて

1

添付ファイルの内容を読み取ってバイト配列内に格納する方法は次のとおりです。あるいは、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 

あなたはより多くのメモリ効率的であることや、添付ファイルがメモリに収まらない場合、あなたはブロブの出力ストリームに直接書き込むことができますしたい場合。 ByteArrayOutputStreamOutputStream outputStream = blob.setBinaryStream(1);

関連する問題