<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          js實(shí)現(xiàn)低內(nèi)存,超快速,較安全的計(jì)算超大文件摘要算法設(shè)計(jì)

          共 1245字,需瀏覽 3分鐘

           ·

          2020-12-25 19:58

          一、基礎(chǔ)概念

          • Blob: 前端的一個(gè)專門用于支持文件操作的二進(jìn)制對(duì)象

          • ArrayBuffer:前端的一個(gè)通用的二進(jìn)制緩沖區(qū),類似數(shù)組,但在API和特性上卻有諸多不同

          • Buffer:Node.js提供的一個(gè)二進(jìn)制緩沖區(qū),常用來處理I/O操作

          ?

          https://zhuanlan.zhihu.com/p/97768916

          二、整體思路

          1. File,通過slice,切片成Blob塊;

          2. FileReader,異步讀取每片Blob,readAsArrayBuffer;

          3. 使用支持增量追加和ArrayBuffer的摘要算法庫進(jìn)行逐片計(jì)算追加摘要。

          三、好處

          ?

          全程arraybuffer,從二進(jìn)制緩沖區(qū)讀取,不讀入到j(luò)s數(shù)組和字符串 ,保證讀取速度;

          分片增量追加,分多次追加,而不是單詞處理超級(jí)大內(nèi)容,保證低內(nèi)存消耗;

          sha256,安全摘要算法,比MD5更安全;

          ?

          四、代碼示例

          ?

          ?

          五、摘要算法庫選型

          ?

          ?

          名稱arrayBuffer支持追加支持npm地址
          spark-md5支持https://www.npmjs.com/package/spark-md5
          crypto-js/sha256否,支持crypto定義的wordArray類型https://www.npmjs.com/package/crypto-js
          sha.js否,支持buffer,對(duì)nodejs友好https://www.npmjs.com/package/sha.js
          js-sha256https://www.npmjs.com/package/js-sha256
          sha3-jshttps://www.npmjs.com/package/js-sha3

          ?

          六、推薦

          js-sha256+分片fileReader讀arraBuffer組合。

          ?

          ?

          參考

          1. html5 - javascript FileReader - parsing long file in chunks - Stack Overflow

          2. File | MDN

          3. Streams API | MDN

          4. WritableStream | MDN

          5. A Guide to Faster Web App I/O and Data Operations with Streams - Blog | SitePen

          6. ArrayBuffer - ECMAScript 6入門

          7. Streams Standard

          8. The Basics of Web Workers - HTML5 Rocks

          9. WEB WORKER配合FILE API,加速前端秒傳讀取MD5

          10. node如何實(shí)現(xiàn)大文件上傳

          11. HTML5 File API 配合 Web Worker 計(jì)算大文件 SHA3 Hash 值?


          瀏覽 63
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99这里有精品 | 竹菊影视一区二区三区四区 | 日本A片免费在线观看 | 懂色av粉嫩av蜜臀av | 青青草免费在线公开视频播放 |