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

2022-09-02 03:48:19 字數 901 閱讀 5513

**鎮頂:

前些天遇到使用者須要上傳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的大小。

要是遇到伺服器錯誤或者使用者不小心重新整理了頁面,就是另外的case了,這裡就是簡單說一下。使用file_name, file_size和file_md5是能夠在即使頁面重新整理的情況下繼續上傳檔案。

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

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

設定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...