**鎮頂:
前些天遇到使用者須要上傳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...