2013-04-12 10 views
17

c'è una funzione per l'aggiunta di dati BLOB in JavaScript Attualmente uso il seguente approccio:dati Aggiunta dei Blob

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

E BlobBuilder funzione non è disponibile in Chrome.

+2

Questa è una buona domanda! –

+1

Questo è fondamentalmente il modo in cui dovresti farlo, a meno che tu non possa in qualche modo mantenere i pezzi di dati in una matrice e quindi fare una singola costruzione Blob. –

+0

Grazie per la risposta Jack è così che ho finito per implementarlo ho appena chiesto se c'è una soluzione più intelligente e nkron ha appena pubblicato una bella. –

risposta

13

Blob s sono "immutabili", quindi non è possibile cambiarne uno dopo averlo fatto. Costruire un nuovo Blob che aggiunge i dati a un blob esistente (come hai scritto nella tua domanda iniziale) è una buona soluzione.

Se non è necessario utilizzare il Blob ogni volta che si aggiunge una parte, è possibile tenere traccia di una serie di parti. Quindi è possibile aggiungere continuamente alla matrice e quindi costruire il Blob alla fine quando ne hai bisogno.

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

Semplice, pulito ed elegante. +1 – Vinay

Problemi correlati