2016-07-05 4 views
1

Ich habe diese Methode:Download ZIP-Datei mit Jersey

@GET 
@Path("/download/{cptCodes}") 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response downloadElectronicComponent(@QueryParam("cptCodes") List<String> codes); 

Ich möchte eine ZIP-Datei, die eine Reihe von Dateien angegeben durch codes Parameter erstellen enthält. Zuerst muss ich diese Dokumente abrufen und dann eine ZIP-Datei erstellen. Diese ZIP-Datei kann sehr groß sein.

Ich lese über StreamingOutput, aber ich sah einige Post einfach eine Datei zurück. Ich denke, mit StreamingOutput ist besser, aber da ich nicht wie es funktioniert, bin ich mir nicht sicher, wie ich es verwenden sollte.

+0

Bitte lassen Sie mich wissen, wenn meine Lösung für Sie arbeitete. –

Antwort

2

Die StreamingOutput kann wie folgt verwendet werden:

@GET 
@Path("/download/{cptCodes}") 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response downloadElectronicComponent(@QueryParam("cptCodes") List<String> codes) { 

    StreamingOutput stream = new StreamingOutput() { 

     @Override 
     public void write(OutputStream os) throws IOException, WebApplicationException { 
      // Generate your ZIP and write it to the OutputStream 
     } 
    }; 

    return Response.ok(stream).build(); 
} 

Damit Sie die Ausgabe streamen können, das heißt, Daten in einer Reihe von „Brocken“ senden.

+0

Danke! Aber sollte "os" ein 'ZipOutputStream' sein und nicht irgendein' OutputStream'? – Rapster

+0

@Rapster Könnten Sie bitte Ihren Kommentar klären? –

+0

Nun, ich lese diesen Beitrag https://examples.javacodegeeks.com/core-java/util/zip/create-zip-file-from-multiple-files-with-zipoutputstream/ und ich sehe das 'ZipOutputStream' wird eingesetzt. Sollte ich nicht angeben, welche Art von OutputStream ich verwende? Welcher Typ von 'OutputStream' ist eigentlich (standardmäßig)? – Rapster