這兩天關於大檔案上傳這個問題搞得很是頭疼,昨天下班回去調研了下,對於不同大小的檔案對應有幾種解決辦法:
第一種很簡單,博主在這裡就不談了。
第二種是博主最近幾天一直在考慮的。誰知昨天天無意中看到了原同事(大神級別)部落格的一篇文章,算是大致明白了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的方法,把資料分塊上傳,每塊上傳的資...