首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript类型转换

Javascript类型转换
EN

Stack Overflow用户
提问于 2012-01-02 20:17:57
回答 2查看 188关注 0票数 3

我正在写一个Firefox扩展。使用javascript,我想从web POST下载一个二进制文件,然后把它的内容写到一个文件中。我的困难在于如何将web返回的类型转换为需要编写的类型:

代码语言:javascript
复制
var c=new XMLHttpRequest();
c.responseType = "arraybuffer";
var data=Uint8Array(c.response);

"data“包含二进制内容。要将其写入文件,请执行以下操作:

代码语言:javascript
复制
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“中写"data”,但我发现这样做的唯一方法是非常慢的:

代码语言:javascript
复制
for(var i=0; i<data.length; i++)
  bstm.write8(data[i]);

这是可行的,但对于中等大小的文件来说,它非常慢。有没有更好的方法呢?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-01-02 20:26:44

我真的不确定你想在这里实现什么,但也许这能帮到你。

火狐的海报扩展:http://www.google.nl/codesearch#1Ekgj8MZCE0/README&q=Firefox%20extension&l=9&ct=rc&cd=6

它似乎正在做你需要的事情

票数 0
EN

Stack Overflow用户

发布于 2012-01-10 21:55:09

您可以将其转换为“常规”数组,如下所示:

代码语言:javascript
复制
var dataArray = Array.prototype.slice.call(data);

这将允许您写出该数据:

代码语言:javascript
复制
bstm.writeByteArray(dataArray, dataArray.length);

假设这个转换为will become unnecessary in Firefox 11,你将能够直接传入Uint8Array

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8700710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档