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();
Questa è una buona domanda! –
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. –
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. –