使用commons-fileupload包進行大文件上傳注意事項


項目中使用

commons-fileupload-1.2.1.jar

進行大文件上傳。

測試了一把,效果很不錯。

 

總結如下:

  1. 必須設置好上傳文件的最大閥值

    final long MAX_SIZE = 10 * 1024 * 1024 * 1024;// 設置上傳文件最大為 10G 

  2. 必須設置文件上傳服務器上的臨時目錄

    // 文件上傳參數配置
    // 創建一個新的文件上傳句柄  
    DiskFileItemFactory factory = new DiskFileItemFactory();  
    // 設置內存緩沖區,超過后寫入臨時文件
    factory.setSizeThreshold(4096);  
    // 設置上傳到服務器上文件的臨時存放目錄 -- 非常重要,防止存放到系統盤造成系統盤空間不足
    factory.setRepository(new File("F:\\uploadFileTemp"));
    ServletFileUpload upload = new ServletFileUpload(factory);  
    upload.setHeaderEncoding("utf-8"); 
     
    // 設置單個文件的最大上傳值
    upload.setSizeMax(MAX_SIZE);  // 文件上傳上限10G

  3. 上傳成功后一定要刪除臨時目錄的臨時文件

    fileItem.delete(); // 請務必調用,在文件上傳結束后,刪除臨時目錄的文件...

  4. 最好記錄下文件從開始上傳到上傳結束的時間點,這個對今后文件上傳時間的分析很有用

     

     

    另外,因為Struts2的上傳功能也引入了該包,但是卻做了攔截器限制文件的最大上傳大小為2M,可以通過修改它的配置文件動態更改上傳文件的大小;而且,Struts會在文件上傳成功后,幫你刪除掉臨時文件。

    我這里使用的是Spring MVC,需要在上傳類中指定最大上傳文件大小,(這玩意一般不動態設置,最大上傳文件大小一般是系統的標准,是讓使用者遵循滴),而且必須在上傳成功后刪除臨時文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM