2014-09-11 81 views
3

我有一個純Uint8Array我想保存到一個blob 我可以用任何類型('文本/純文本',應用程序/八位字節流等)創建blolb, ..Javascript如何創建和使用blob純二進制數據

var a_blob = new Blob(Uint8Array,{type: whatever}); 

後來要測試結果我有:

this.read_blob = function (blob) { 
var reader = new FileReader();   
reader.onloadend = function (evt) 
{ var full_buffer = evt.target.result; } 
reader.readAsArrayBuffer(blob);  
} 

我已經存儲1個219 2 0值(使用Uint32Array 4個值),我已經cheked所有是正確的。

現在,我有:(I想要查詢的團塊值)

var data = new Uint32Array (full_buffer,0,4); 

我有: 0:808464433 1:809054514 2:808464432 3:808464432 ???? ????????

如果我使用:

var data = new Uint8Array (full_buffer,0,4); 

我有: [49,48,48,48,50,49,57,48,48,...]其是ASCII碼爲1 0 0 0 2 1 9 0 .... (我的值的字符串表示....)

我在做什麼壞事? 也許blob不是真的保存爲純二進制數據? fullbuffer是一個二進制字符串對象嗎?我有使用特定類型嗎? 我是否以不同的方式讀取緩衝區? 必須創建一個Uint8Array asociating循環中的full_buffer個人數據?

+2

如果您認爲您的解決方案將來會對其他人有所幫助,那麼您應該回答自己的問題(不要使用解決方案編輯您的問題)。不過,可能需要等待一段時間才能自我回答。 – apsillers 2014-09-11 16:41:34

+0

請將您的答案從您的問題中移出,並轉化爲答案。我會贊成它! – 2014-10-17 15:38:21

回答

0

解決

由於MDN解釋說:要創建你必須使用

BLOB =新斑塊(部分型號)的BLOB; part =要放入新Blob對象的數據對象數組。所以修復(不容易發現,因爲自己正在看到一個又一個時間數組,bufferarray,typedarrays ....並且你感到困惑)是使用[]括號來動態創建元素/數組的數組,秒。

所以不是:

var a_blob = new Blob(Uint8Array,{type: whatever}); 

使用

var a_blob = new Blob([Uint8Array],{type: whatever}); 

相信我,很多網頁後,搜索你可以看到的帖子,你可以看到有和沒有括號的blob創建

相關問題