Application Server:Apache Tomcat 8.0
我有一个允许用户下载文件的doGet方法。要下载的文件不驻留在服务器上,而是通过输入流从URL(get方法)读取文件,然后将字节重定向到servlet输出流。
在doGet方法中:
以上适用于小文件。但是如果要下载的文件足够大(通常超过400MB),我们就会看到以下异常:
org.apache.catalina.connector.ClientAbortException: java.io.IOException: An existing connection was forcibly closed by the remote host
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:393)
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:339)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:418)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:406)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1793)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)

将字节流从网址重定向到用户而不将文件存储在服务器上的最可靠方法是什么?