2016-06-28 5 views
1

私はRESTサービスから大きなファイルをダウンロードしたい、私はコードを持っている:ジャージー1.17ダウンロード大きなファイル

@GET 
@Path("/laboDownloadAnyType") 
@Produces(MediaType.APPLICATION_OCTET_STREAM) 
public Response laboDownload() throws FileNotFoundException 
{ 
    final String fileName = "SampleVideo_1280x720_50mb.mp4"; 
    final InputStream fileInStream = new FileInputStream(fileName); 
    return Response.ok(fileInStream, MediaType.APPLICATION_OCTET_STREAM_TYPE) 
     .header("Content-Disposition", "attachment; filename=\"" + fileName + "\"") //optional 
     .build(); 
} 

を、私は小さなファイルを使用しているとき、それは本当に素晴らしい作品が、今、私は大規模なファイルをダウンロードしたいです(500MBから3GBまで)私は得ています

java.lang.OutOfMemoryError: Java heap space 

この問題を解決するにはどうすればよいですか?

+0

使用FTPのログコミュをオフにする必要がありました。明らかに、メモリ内のファイル全体を保持しようとします...避けてください。 – Fildor

+0

ああ、待ってください。 CodesnippetはServer-Side ...私はストリーミングソリューションがあることを覚えていると思います。 – Fildor

+0

多分これは助けることができる:http://www.bhaveshthaker.com/22/sending-transfering-pushing-files-in-multiparts-chunks-from-server-to-client-with-restful-web-services-in- java / – Fildor

答えて

0

代わりにInputStreamの使用れるMappedByteBuffer、あなたはここでCheck this link

をれるMappedByteBufferの実装を確認することができ、それはあなたが必要な機能を提供願っています。解決

0

問題: 私は、可能な場合、大きなファイルのため

関連する問題