2020年2月7日 星期五

Javascript 讀取 blob

Firefox 69 或是 Chrome 76 以後的版本, blob 透過擴展函數 arrayBuffer( ) 可以取得其中的內容, arrayBuffer( ) 可以用在像是透過 webSocket 取得的 blob 資料, 或是放入陣列中(_blobArray)再用 Blob 建構式產生的新 blob, 若是舊版本只能透過 FileReader 去讀取, 以下程式碼搭配 Promise 物件模擬 arrayBuffer 的讀取行為:
        // arrayBuffer reader
        async  function  blobReader(_blobArray) {
            const blobTemp = new Blob(_blobArray);
            if( blobTemp.arrayBuffer )  return await blobTemp.arrayBuffer( );
            else { // use FileReader & Promise to read
                    var _ready = null;
                    const  _arrayBuffer = new Promise((_resolv, _) => _ready=_resolv);
                    const  _reader = new FileReader( );
                    _reader.onloadend = ( ) => _ready && _ready(_reader.result);
                    _reader.readAsArrayBuffer(blobTemp);
                   return await  _arrayBuffer;
           }
        }

沒有留言:

張貼留言

使用 linux 玩早期的 Turbo C

Turbo C  是早期在 dos (磁碟作業系統)底下的用來編譯 C 語言的編譯程式,可以上官網下載:              https://turbo-c.net/turbo-c-download/ 為了讓它能在 linux 底下順利運作, 可以安裝 dosbox:   ...