我有一个Java Web应用程序,用户可以在其中下载图像
我编码下载的方式是使用IOUtils.copy到响应流
但是下载一个4mb的图像大约需要10秒钟,而且发生的速度非常慢。
好像服务器一次发送块。

这是我将图像写入输出流的方式:

 OutputStream out = response.getOutputStream();
 FileInputStream stream = new FileInputStream(path);
 IOUtils.copy(stream, out);
 out.flush();
 out.close();


有更快的方法吗?

更新

使用1MB缓冲区和copyLarge的以下代码未做任何更改。

        FileInputStream stream = new FileInputStream(path);
        byte[] buffer = new  byte[1024 * 1024];
        IOUtils.copyLarge(stream, out,buffer );

最佳答案

尝试copyLarge:

public static long copyLarge(InputStream input,
             OutputStream output,
             byte[] buffer) throws IOException


使用缓冲区大小约为1Mb

08-19 10:54