大文件使用FileCopyUtils.copy在Java中下载

时间:2011-02-23 21:08:45

标签: java file download

我写了一些代码来将文件从Sever下载到客户机:

   BufferedInputStream in = null;
                try {
                    in = new BufferedInputStream(new FileInputStream(fileNpath));
                } catch (FileNotFoundException e) { 
                    e.printStackTrace();
                }
                String mimetype = servletContext.getMimeType(fileNpath);

                response.setBufferSize(fSize);
                response.setContentType(mimetype); 
                response.setHeader("Content-Disposition", "attachment; filename=\""+ fileName + "\"");
                response.setContentLength(fSize); 


                try {
                    FileCopyUtils.copy(in, response.getOutputStream()); 
                    in.close();
                    response.getOutputStream().flush();
                    response.getOutputStream().close();  
                } catch (IOException e) { 
                    e.printStackTrace();
                }

此代码适用于小于8M的文件,但不适用于较大的文件。如果你们给我一些提示,我将不胜感激。

谢谢, 尼克

2 个答案:

答案 0 :(得分:0)

这里没什么可做的。在Tomcat中,有多种方法可以设置最大文件上载大小。

例如,在tomcat server.xml中,有一个maxPostSize设置。我真的不太了解您的服务器,具体说明在哪里看。

答案 1 :(得分:0)

在tomcat中设置堆大小解决了这个问题。

所以我在apache-tomcat-7.0.8 \ bin \ catalina.bat中设置CATALINA_OPTS = -Xms512m -Xmx512m

我还设置了maxPostSize =“0”