Saya sedang mempelajari Blob, dan saya perhatikan bahwa ketika Anda memiliki ArrayBuffer, Anda dapat dengan mudah mengonversinya menjadi Blob sebagai berikut:
var dataView = new DataView(arrayBuffer);
var blob = new Blob([dataView], { type: mimeString });
Pertanyaan yang saya miliki sekarang adalah, apakah mungkin untuk beralih dari Blob ke ArrayBuffer?
javascript
blob
arraybuffer
Jeanluca Scaljeri
sumber
sumber
Blob
tidak dapat langsung dibaca tetapi dapat dilakukan dengan beberapa API.Jawaban:
The
Response
API mengkonsumsi (berubah)Blob
dari mana data dapat diambil dalam beberapa cara. Para OP hanya memintaArrayBuffer
, dan inilah demonstrasi itu.alternatifnya Anda bisa menggunakan ini:
sumber
Blob.arrayBuffer()
mana yang sebenarnya memiliki kompatibilitas yang cukup buruk bahkan di tahun 2020, caniuse.com/#feat=mdn-api_blob_arraybuffer atau developer.mozilla.org/en-US/docs/Web/API/Blob/arrayBufferAnda dapat menggunakan
FileReader
untuk membacaBlob
sebagai fileArrayBuffer
.Berikut contoh singkatnya:
Berikut contoh yang lebih panjang:
Ini telah diuji di konsol Chrome 27—69, Firefox 20—60, dan Safari 6—11.
Berikut juga demonstrasi langsung yang dapat Anda mainkan: https://jsfiddle.net/potatosalad/FbaM6/
Perbarui 2018-06-23: Terima kasih kepada Klaus Klein untuk tip tentang
event.target.result
versusthis.result
Referensi:
sumber
this
.<EventTarget>.result
harus memperbaikinya!Sekadar melengkapi jawaban Pak @potatosalad.
Anda sebenarnya tidak perlu mengakses cakupan fungsi untuk mendapatkan hasil pada callback onload , Anda dapat dengan bebas melakukan hal berikut pada parameter peristiwa :
Mengapa ini lebih baik? Karena dengan demikian kita dapat menggunakan fungsi panah tanpa kehilangan konteksnya
sumber
Atau Anda dapat menggunakan API pengambilan
Saya tidak tahu apa perbedaan kinerjanya, dan ini akan muncul di tab jaringan Anda di DevTools juga.
sumber
new Response(blob).arrayBuffer()
Ada sekarang (76+ & FF 69+ Chrome) a Blob.prototype.arrayBuffer () metode yang akan mengembalikan Janji menyelesaikan dengan ArrayBuffer mewakili data Blob ini.
sumber