spring大檔案分塊上傳原理解析

2021-08-03 16:17:39 字數 749 閱讀 7991

這兩天關於大檔案上傳這個問題搞得很是頭疼,昨天下班回去調研了下,對於不同大小的檔案對應有幾種解決辦法:

第一種很簡單,博主在這裡就不談了。 

第二種是博主最近幾天一直在考慮的。誰知昨天天無意中看到了原同事(大神級別)部落格的一篇文章,算是大致明白了http協議分塊傳輸原理。要想分塊要解決下面幾個問題:

1已上傳的檔案怎麼唯一標識,然後不用再次上傳 

2.前端怎麼分塊 

3.後端怎麼接受分塊,組裝多個分塊

一、取檔案的md5值,上傳後把md5存資料庫;再次上傳時獲取前端傳來的md5到資料庫中查詢,如果已存在,則不用再次上傳

二、關於前端分塊,請參考

三、後端接受分塊

1.每當乙個分塊到來,後端根據其帶的md5在伺服器建立乙個同名的資料夾,並根據塊的索引,建立同名的檔案(0,1,2...),並用spring mvc上傳到伺服器。

2.當所有的分塊都傳完後,前端像後端傳送合併的請求,那麼問題來了,怎麼合併呢?

答案就是:filechannel

下面上乾貨

filechannel outchannel = new fileoutputstream(outputfile).getchannel();

//合併

filechannel inchannel;

for(file file : files)

}outchannel.close();

關於ftp上傳,也是博主下一步考慮的事情,敬請期待。

IHttpModule 分塊上傳大檔案

1.一般的在asp.net裡上傳檔案都是10m左右,要做到大檔案上傳,必須要改web.config,不過改了web.config有時候也上傳不成功,那是每次上傳的檔案太大,瀏覽器在這個過程中會超時,採用分塊上傳的方法就可以避免這種情況。2.分塊上傳就是利用post的方法,把資料分塊上傳,每塊上傳的資...

IHttpModule 分塊上傳大檔案

1.一般的在asp.net裡上傳檔案都是10m左右,要做到大檔案上傳,必須要改web.config,不過改了web.config有時候也上傳不成功,那是每次上傳的檔案太大,瀏覽器在這個過程中會超時,採用分塊上傳的方法就可以避免這種情況。2.分塊上傳就是利用post的方法,把資料分塊上傳,每塊上傳的資...

IHttpModule 分塊上傳大檔案

1.一般的在asp.net裡上傳檔案都是10m左右,要做到大檔案上傳,必須要改web.config,不過改了web.config有時候也上傳不成功,那是每次上傳的檔案太大,瀏覽器在這個過程中會超時,採用分塊上傳的方法就可以避免這種情況。2.分塊上傳就是利用post的方法,把資料分塊上傳,每塊上傳的資...