1、大文件上傳服務器內存占用
一般WEB開發框架如SpringMVC,在基於Web容器如Tomcat處理HTTP請求時,都傾向於采用職責鏈流水線式的處理機制。HTTP請求被封裝為一個可解析對象放在內存里依次往下傳。如果請求不光是正常文本,還帶着上傳文件,則需要考慮Web容器限制當個請求的大小。如很多WEB容器默認一個請求最多分配20M的服務器內存,如果要在一次請求中上傳文件則要根據限制上傳文件大小調整這個配置。比如100M,這個時候如果有10個人同時上傳100M文件,則就會占用1G內存。如果要上傳更大文件,則要考慮分割文件分多次請求上傳。
如果上傳文件占用內存太大可能會導致服務器被拖死,所以部分大型網站用專用服務器來處理大文件上傳。
2、文件大小限制
HTTP協議1.1版本中消息體長度字段Content-Length的類型規定為16個字節的Decimal類型【它能表示的最大值大到沒朋友】,且沒有對該長度做邏輯上限制。但如果程序里用Int類型表示文件大小字節數,由於4個字節的int類型最大能表示的you有符號整數位為2GB-1,無符號整數最大值為4GB,會導致程序能上傳的最大文件為2GB或4GB。
3、其它常見問題
- 大文件傳輸,應該支持斷點續傳;
- 要有文件校驗,校驗不對的話能自動重傳;
- 要考慮多線程分片上傳,並發控制,帶寬壓力,限速上傳;
- 多文件排隊上傳;
- 中轉臨時文件的刪除機制;
https://www.zhihu.com/question/39593108