Добавление данных Blob

20

Есть ли функция для добавления данных BLOB в JavaScript В настоящее время я использую следующий подход:

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

И функция BlobBuilder недоступна в Chrome.

    
задан Deni Spasovski 12.04.2013 в 13:54
источник
  • Это хороший вопрос! –  Tomislav Markovski 02.12.2013 в 20:41
  • Это в основном то, как вы должны это делать, если вы не можете каким-то образом сохранить кусочки данных в массиве, а затем сделать одну конструкцию Blob. –  Ja͢ck 22.07.2014 в 02:15
  • Спасибо за ответ Джек, вот как я в конечном итоге реализую его, я просто спросил, есть ли более разумное решение, и nkron просто разместил хороший. –  Deni Spasovski 23.07.2014 в 04:44

1 ответ

16

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();
    
ответ дан nkron 22.07.2014 в 02:10
  • Простой, чистый и элегантный. +1 –  Vinay 01.02.2016 в 04:35