2013-04-12 18 views
17

私は現在、次のアプローチを使用JavaScript にBLOBデータを追加するための機能があります:追加BLOBデータ

var bb = new Blob(["Hello world, 2"], { type: "text/plain" }); 
bb = new Blob([bb, ",another data"], { type: "text/plain" }); 

そしてBlobBuilder機能がChromeで利用できません。

+2

これは良い質問です。 –

+1

これは基本的にどのようにして行うのですか?何らかの形でデータの配列を保持してから、1つのBlob構造を行うことができない場合を除きます。 –

+0

応答ジャックのおかげで、私はそれを実装する方法です。ちょうどもっとスマートなソリューションがあり、nkronがちょうど良いものを投稿したかどうか尋ねました。 –

答えて

13

Blobは「不変」なので、作成後は変更できません。既存のBLOBにデータを追加する新しいBLOBを作成すると(あなたの最初の質問に書いたように)良い解決策です。

部品を追加するたびにBlobを使用する必要がない場合は、部品の配列を追跡するだけで済みます。その後、配列に連続して追加し、最後に必要なときにBlobを構築することができます。

var MyBlobBuilder = function() { 
    this.parts = []; 
} 

MyBlobBuilder.prototype.append = function(part) { 
    this.parts.push(part); 
    this.blob = undefined; // Invalidate the blob 
}; 

MyBlobBuilder.prototype.getBlob = function() { 
    if (!this.blob) { 
    this.blob = new Blob(this.parts, { type: "text/plain" }); 
    } 
    return this.blob; 
}; 

var myBlobBuilder = new MyBlobBuilder(); 

myBlobBuilder.append("Hello world, 2"); 

// Other stuff ... 

myBlobBuilder.append(",another data"); 
var bb = myBlobBuilder.getBlob(); 
+3

シンプルで清潔でエレガント。 +1 – Vinay

関連する問題