2016-09-20 1 views
0

Ich schreibe einen Web-Service in JAVA mit Apache CXF.Wie Attachment-Objekt zu ByteArray in JAVA konvertieren

So habe ich eine Methode, deren Prototyp folgt:

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

Nun, ich möchte diesen Anhang konvertieren [] auf Byte. Wie kann ich es tun?

+0

Möchten Sie den Inhalt des Attachemt zu einem Byte-Array lesen, oder Sie möchten es serialisieren? Bitte klären Sie Ihre Frage, weil es unklar ist, was Sie fragen –

+0

Schließlich muss ich es als BLOB in der Datenbank speichern. –

Antwort

1

So können Sie den Inhalt des Anhangs lesen und in einem Bytearray speichern. Alternativ können Sie direkt in eine OutputStream schreiben und die Konvertierung zu byte[] überspringen.

 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 

Wenn Sie mehr Speicher effizient sein, oder wenn die Anlage nicht in den Speicher passt, können Sie direkt mit dem Ausgangsstrom des Blobs schreiben. Ersetzen Sie einfach die ByteArrayOutputStream durch OutputStream outputStream = blob.setBinaryStream(1);

Verwandte Themen