/ / Перетворення типу Javascript - javascript, firefox, xpcom

Перетворення типу JavaScript - javascript, firefox, xpcom

Я пишу розширення для Firefox. Використовуючи javascript, я хочу завантажити двійковий файл з веб-POST, а потім хочу записати його вміст у файл. Моя складність полягає в тому, як перетворити з типу, поверненого Інтернетом, у тип, необхідний для написання:

var c=new XMLHttpRequest();
c.responseType = "arraybuffer";
var data=Uint8Array(c.response);

"Дані" містить двійковий вміст. Щоб записати його у файл:

var file= FileUtils.getFile("ProfD", ["somefile"]);
var ostm= FileUtils.openFileOutputStream(file);
var bstm= Cc["@mozilla.org/binaryoutputstream;1"].createInstance(Ci.nsIBinaryOutputStream);
bstm.setOutputStream(ostm);

Тоді мені потрібно записати "дані" в "bstm", але єдиний спосіб, який я знайшов, це зробити дуже повільно:

for(var i=0; i<data.length; i++)
bstm.write8(data[i]);

Це працює, але це дуже повільно для файлів середнього розміру. Чи є кращий спосіб це зробити? Дякую.

Відповіді:

0 для відповіді № 1

Не дуже впевнений, чого ви намагаєтеся досягти тут, але, можливо, це може вам допомогти.

Розширення плакатів для Firefox: http://www.google.nl/codesearch#1Ekgj8MZCE0/README&q=Firefox%20extension&l=9&ct=rc&cd=6

Здається, робиш те, що тобі потрібно


0 для відповіді № 2

Ви можете перетворити його в "звичайний" масив, як це:

var dataArray = Array.prototype.slice.call(data);

Це дозволить вам записати ці дані:

bstm.writeByteArray(dataArray, dataArray.length);

Нібито це перетворення стане непотрібним у Firefox 11, ви зможете проїхати Uint8Array безпосередньо