<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] * * * * * [參考文章一](https://javascript.ruanyifeng.com/htmlapi/file.html#toc0) [參考文章二](https://www.jianshu.com/p/4d014a45aaf7) ### `Blob` API 1. `Blob` API 允許我們通過js直接操作二進制數據 > 一個Blob對象就是一個包含有只讀原始數據的類文件對象。Blob對象中的數據并不一定得是JavaScript中的原生形式。File接口基于Blob,繼承了Blob的功能,并且擴展支持了用戶計算機上的本地文件。 2. `Blob` 語法 `new Blob(dataArray,option)` - dataArray:數組,包含了要添加到Blob對象中的數據,數據可以是任意多個ArrayBuffer,ArrayBufferView, Blob,或者 DOMString對象。 - option:對象,用于設置Blob對象的屬性(如:[MIME類型](http://www.w3school.com.cn/media/media_mimeref.asp)) 3. `Blob` 的使用 將字符串元素轉化為二進制 ```JavaScript let div = "<div>我是div</div>" let blob = new Blob([div],{type:'text/html'}) // Blob(13)?{size: 13, type: "text/html"} ``` `Blob` 還有一個`slice`方法,返回一個新的`Blob`對象,包含了源`Blob`對象中指定范圍內的數據 ```JavaScript blob.slice(start,end) ``` - start: 可選,代表要拷貝的起始位置 - end: 可選,代表要拷貝的結束位置,默認到結束位置 例如: ```JavaScript let div = "<div>我是div</div>" let blob = new Blob([div],{type:'text/html'}) // Blob(13)?{size: 13, type: "text/html"} let copyBlob = blob.slice(0,3) //Blob(3)?{size: 3, type: ""} ``` ### `Blob URL` Blob URL是blob協議的URL,它的格式如下: ```JavaScript blob:http://XXX ``` Blob URL可以通過URL.createObjectURL(blob)創建。在絕大部分場景下,我們可以像使用Http協議的URL一樣,使用Blob URL。常見的場景有:作為文件的下載地址和作為圖片資源地址。 **1. 文件下載** ```HTML <a href="" id="download">點擊下載</a> <script> let div = "<div>我是div</div>" let blob = new Blob([div],{type:'text/html'}) let blobUrl = URL.createObjectURL(blob) let a = document.getElementById('download') a.href = blobUrl a.download = "blob" </script> ``` 上邊代碼單點擊`a`標簽時,會下載一個名為 `blob`的`html`文件 **2.圖片資源** ```HTML <input type="file" id="inp"> <img src="" alt="blob"/> <script> let inp = document.getElementById("inp") let img = document.querySelector('img') inp.onchange = function(e){ let file = e.target.files[0] let blobUrl = URL.createObjectURL(file) img.src = blobUrl } </script> ``` 上邊上傳圖片后,圖片會自動加載出來 這個URL可以放置于任何通常可以放置URL的地方,比如img標簽的src屬性。需要注意的是,即使是同樣的二進制數據,每調用一次URL.createObjectURL方法,就會得到一個不一樣的URL。 這個URL的存在時間,等同于網頁的存在時間,一旦網頁刷新或卸載,這個URL就失效。除此之外,也可以手動調用URL.revokeObjectURL方法,使URL失效。 ```JavaScript window.URL.revokeObjectURL(objectURL); ``` 比如上面我們加載圖片資源后,可以釋放createObjectURL創建的對象 ```JavaScript inp.onchange = function(e){ let file = e.target.files[0] let blobUrl = URL.createObjectURL(file) img.src = blobUrl } img.onload = function(){ URL.revokeObjectURL(this.src); } ``` **3. Blob URL 和 DataURL 的區別** - `Blob URL`的長度一般比較短,但`Data URL`因為直接存儲圖片`base64`編碼后的數據,往往很長,如上圖所示,瀏覽器在顯示Data URL時使用了省略號(…)。當顯式大圖片時,使用`Blob URL`能獲取更好的可能性。 - `Blob URL`可以方便的使用`XMLHttpRequest`獲取源數據,對于`Data URL`,并不是所有瀏覽器都支持通過`XMLHttpRequest`獲取源數據的。 - `Blob URL` 只能在當前應用內部使用,把`Blob URL`復制到瀏覽器的地址欄中,是無法獲取數據的。`Data URL`相比之下,就有很好的移植性,你可以在任意瀏覽器中使用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看