<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        詳細介紹HTML5Fileapi實現斷點續傳

        來源:懂視網 責編:小采 時間:2020-11-27 15:10:26
        文檔

        詳細介紹HTML5Fileapi實現斷點續傳

        詳細介紹HTML5Fileapi實現斷點續傳:目前市場上大多數的網站的斷點上傳都是需要安裝瀏覽器插件的,本文就針對高級瀏覽器的環境下,通過HTML5 File api實現斷點上傳進行說明一、實現文件多選HTML5的<input>新增了"multiple"屬性,該屬性可接受多個值的文件上傳字段<inp
        推薦度:
        導讀詳細介紹HTML5Fileapi實現斷點續傳:目前市場上大多數的網站的斷點上傳都是需要安裝瀏覽器插件的,本文就針對高級瀏覽器的環境下,通過HTML5 File api實現斷點上傳進行說明一、實現文件多選HTML5的<input>新增了"multiple"屬性,該屬性可接受多個值的文件上傳字段<inp

        目前市場上大多數的網站的斷點上傳都是需要安裝瀏覽器插件的,本文就針對高級瀏覽器的環境下,通過HTML5 File api實現斷點上傳進行說明

        一、實現文件多選

        HTML5的<input>新增了"multiple"屬性,該屬性可接受多個值的文件上傳字段

        <input type="file" multiple="multiple" name="file" id="file">

        添加了該屬性用戶就可以在彈出的對話框中一次性選擇多個文件了

        二、實現文件從計算機拖拽到網頁以及添加文件隊列功能

        這里我們用 dragover 和 drop 兩個事件來管理文件拖拽的功能

        其中 dragover 用來處理在指定的元素上移動時的事件,這里我們通過給body綁定dragover時間來處理頁面中拖動文件的事件

        document.body.addEventListener('dragover', dragFile, false);
        function dragFile(evt) {
         evt.stopPropagation();
         evt.preventDefault();
         evt.dataTransfer.dropEffect = 'copy';
        }

        用 drop 事件來處理鼠標松開時候的事件,此時應該將用戶拖動過來的文件加入到上傳隊列中,以供后續的處理

        document.body.addEventListener('drop', dropFile, false);
        function dragFile(evt) {
         evt.stopPropagation();
         evt.preventDefault();
         // dataTransfer.files屬性可以獲取到所有拖動選擇的文件,通過遍歷可以讀取到所有文件的信息。
         // 遍歷每個文件可以獲取到文件的 name、size、type、lastModifiedDate等關鍵信息
         var files = evt.dataTransfer.files;
         // addfile 方法 用來添加上傳文件隊列,在input的change事件中也需要調用
         // 該方法首先檢查有無文件正在上傳中,如果有就將后續加入的文件放到上傳隊列中,如果沒有文件正在上傳就直接執行上傳命令
         addfile(files);
        }

        三、文件續傳原理

        目前比較常用的斷點續傳的方法有兩種,一種是通過websocket接口進行文件上傳,另一種是通過ajax,兩種方法各有千秋,雖然websocket聽起來比較高端些~ 但是除了用了不同的協議外其他的算法基本上都是很相似的,并且服務端要開啟ws接口,這里用相對方便的ajax來說明斷點上傳的思路。

        說來說去,斷點續傳最核心的內容就是把文件“切片”然后再一片一片的傳給服務器,但是這看似簡單的上傳過程卻有著無數的坑。

        首先是文件的識別,一個文件被分成了若干份之后如何告訴服務器你切了多少塊,以及最終服務器應該如何把你上傳上去的文件進行合并,這都是要考慮的。

        因此在文件開始上傳之前,我們和服務器要有一個“握手”的過程,告訴服務器文件信息,然后和服務器約定切片的大小,當和服務器達成共識之后就可以開始后續的文件傳輸了。

        前臺要把每一塊的文件傳給后臺,成功之后前端和后端都要標識一下,以便后續的斷點。

        當文件傳輸中斷之后用戶再次選擇文件就可以通過標識來判斷文件是否已經上傳了一部分,如果是的話,那么我們可以接著上次的進度繼續傳文件,以達到續傳的功能。

        四、文件的前端切片

        有了HTML5 的 File api之后切割文件比想想的要簡單的多的多。

        只要用slice 方法就可以了

        var packet = file.slice(start, end);
      1. 參數start是開始切片的位置,end是切片結束的位置 單位都是字節。通過控制start和end 就可以是實現文件的分塊

        file.slice(0,1000);
        file.slice(1000,2000);
        file.slice(2000,3000);
        // ......

        五、文件片段的上傳

        上一部我們通過slice方法把文件分成了若干塊,接下來要做的事情就是把這些碎片傳到服務器上。

        這里我們用ajax的post請求來實現

        textpop-up
        var xhr = new XMLHttpRequest();
        var url = xxx // 文件上傳的地址 可以包括文件的參數 如文件名稱 分塊數等以便后臺處理
        xhr.open('POST', url, true);
        xhr.onload = function (e){
         // 判斷文件是否上傳成功,如果成功繼續上傳下一塊,如果失敗重試該快
        }
        xhr.upload.onprogress = function(e){
         // 選用 如果文件分塊大小較大 可以通過該方法判斷單片文件具體的上傳進度
         // e.loaded 該片文件上傳了多少
         // e.totalSize 該片文件的總共大小
        }
        xhr.send(packet);
      2. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        詳細介紹HTML5Fileapi實現斷點續傳

        詳細介紹HTML5Fileapi實現斷點續傳:目前市場上大多數的網站的斷點上傳都是需要安裝瀏覽器插件的,本文就針對高級瀏覽器的環境下,通過HTML5 File api實現斷點上傳進行說明一、實現文件多選HTML5的<input>新增了"multiple"屬性,該屬性可接受多個值的文件上傳字段<inp
        推薦度:
        標簽: 文件 實現 html5
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 精品国产污污免费网站入口在线 | 久久久久久久久久久免费精品| 免费电视剧在线观看| 99久久亚洲精品无码毛片| 无码成A毛片免费| 67pao强力打造67194在线午夜亚洲| 中文在线日本免费永久18近| 亚洲最大AV网站在线观看| 中文字幕无码一区二区免费| 亚洲av日韩av不卡在线观看| 日本免费人成视频在线观看| 亚洲黑人嫩小videos| 毛片免费vip会员在线看| 亚洲人成无码网站在线观看| 国产免费av片在线播放| 一级特级aaaa毛片免费观看 | 亚洲AV男人的天堂在线观看| 免费的涩涩视频在线播放| 免费又黄又爽又猛大片午夜 | 成全高清在线观看免费| 亚洲av无码专区在线播放| 免费专区丝袜脚调教视频| 中国china体内裑精亚洲日本| 国产乱弄免费视频| 最近中文字幕免费大全| 亚洲国产成人精品无码区在线秒播 | 两个人的视频高清在线观看免费| 亚洲乱色伦图片区小说| 亚洲精品视频免费观看| 99re热精品视频国产免费| 精品国产日韩久久亚洲| 亚洲国产一级在线观看 | 97性无码区免费| 国产成人亚洲精品无码AV大片| 超清首页国产亚洲丝袜| 亚洲一区二区三区免费视频| 亚洲精品无码aⅴ中文字幕蜜桃| 久久精品国产亚洲Aⅴ蜜臀色欲| 最近中文字幕电影大全免费版 | 日韩视频在线精品视频免费观看| 日韩亚洲翔田千里在线|