2011-02-23 23 views
0

我寫了一些代碼,以斷絕文件下載到客戶機:大文件中的Java下載使用FileCopyUtils.copy

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

會發生什麼?你遇到異常還是隻是掛起? – sstendal 2011-02-23 21:17:34

+0

當我在tomcat上部署我的應用程序時,它只是傳輸8M(有時是16M)的75M文件而不顯示任何錯誤消息。當我點擊打開文件時,我只知道問題。 – Nick 2011-02-23 21:47:12

回答

0

沒有太多在這裏去。在Tomcat中,有各種方法來設置最大文件上傳大小。

例如在tomcat server.xml中有一個maxPostSize設置。我真的不知道你的服務器有多特別說明在哪裏尋找。

+0

謝謝,我的應用程序服務器是Tomcat,我會增加maxPostSize以查看它是否可以工作。 – Nick 2011-02-23 22:03:19

0

在tomcat中設置堆大小解決了這個問題。

所以我設置CATALINA_OPTS = -Xms512m -Xmx512m在Apache的Tomcat的7.0.8 \ BIN \ catalina.bat中

我還設置maxPostSize = 「0」