2016-09-20 3 views
0

Apache CXF를 사용하여 JAVA에서 웹 서비스를 작성하고 있습니다.첨부 개체를 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);