Web支援可暫停的超大檔案上傳

2021-07-04 12:23:32 字數 779 閱讀 1831

**鎮頂:

前些天遇到使用者需要上傳10gb大小以上的檔案的需求,查查網上的庫,都不好用。都沒有乙個完整的前後端的例子,要麼像resumable.js只有前端,後端寫得無比麻煩。要麼是jquery file uploader封裝得太完整,想改就很麻煩。懶人就自己寫個小而易懂大家都可以用的東西吧。

**支援ie 10+, opera, chrome, firefox, safari, 在android 4.2以上的預設瀏覽器貌似都能順利執行。js**也就80行左右,錯誤處理留空。

**js部分就是使用html5的blob將檔案分片,然後逐個post。

為了保證傳輸效率,就是讓整個post請求除了html的header外,都用binary形式上傳。如果再配合新的api,比如後端寫乙個open file的api(e.g. /open),返回乙個hash,然後用hash作為url,上傳檔案data的時候(e.g. /upload/:hash)就往指定檔案裡寫資料就好了,最後使用完呼叫close file的api(e.g. /close/:hash)。測試了下,在單機狀態下,傳了2.6gb的檔案用了77秒,大概30mb/s,差不多是硬碟的讀寫速度了吧。

想要實現暫停和恢復,在event_reader_loadend裡使用個flag就可以了,暫停的時候設定flag為true,在上傳blob成功的時候如果flag為true就跳出停止;當按恢復的時候,繼續從暫停的地方按檔案偏移讀取檔案blob。

想要達到更好的傳輸速度,就在uploadfile裡的step上下文章就好了,通過統計沒傳乙個blob所用的時間,動態調整step的大小,就是檔案blob的大小。

Web支援可暫停的超大檔案上傳

鎮頂 前些天遇到使用者須要上傳10gb大小以上的檔案的需求,查查網上的庫。都不好用。都沒有乙個完整的前後端的樣例,要麼像resumable.js僅僅有前端,後端寫得無比麻煩。要麼是jquery file uploader封裝得太完整。想改就非常麻煩。懶人就自己寫個小而易懂大家都能夠用的東西吧。支援i...

設定php支援上傳大檔案

1 file uploads on 是否允許http檔案上傳。預設值為on允許http檔案上傳,此選項不能設定為off。2 upload tmp dir d wamp tmp 檔案上傳的臨時存放目錄。如果沒指定則php會使用系統預設的臨時目錄。該選項預設為空,此選項在手動配置php執行環境時,也容易...

NeatUpload 支援大檔案上傳的控制項

在 推薦 net批量上傳控制項 htmlinputfiles 一 前期準備 2 訪問位址 檢視相應的demo示例 3 將brettle.web.neatupload.dll新增到工具箱 4 將 neatupload 1.2.32下的neatupoad資料夾複製到專案根目錄 5 在web.config...