2016-03-29 5 views
2

Ich möchte Video-Datei streamen, anstatt es herunterzuladen. Ich habe es mit dem folgenden Code versucht. Aber es wird heruntergeladen.Anstatt Download, streamen Videodatei mit Jersey

@GET 
@Path("video") 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response video() { 
File file = new File("/home/lvaddi/Downloads/demoVideoFile.flv"); 

ResponseBuilder response = Response.ok(file, MediaType.APPLICATION_OCTET_STREAM); 
response.header("Content-Disposition", "filename=videofile.flv"); 
return response.build(); 
} 

Antwort

2

sollten Sie StreamingOutput verwenden zu tun, dass die Datei nicht als Körper zurückkehren (die die gesamte Datei in loser Schüttung senden), so etwas wie:

new StreamingOutput() { 
     @Override 
     public void write(OutputStream output) throws IOException, WebApplicationException { 
      try { 
       InputStream input = <get input stream from your file> 
       IOUtils.copy(input, output); 
       output.flush(); 
      } finally { 
       EntityUtils.consume(response.getEntity()); 
       IOUtils.closeQuietly(response); 
      } 
     } 
    }; 

Es gibt auch ein Beispiel here