急 各位大虾来帮忙!!!

GT1986 2011-06-01 03:55:33
网上下载一个firefox的扩展(批量下载图片) 很小不占什么资源感觉很好 可惜可能作者大意 功能没有实现完全 最后不能下载图片
以下是开发实例网址http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/

具体功能代码剪切一两个模块
清单 8. 下载单张图片的 JavaScript 方法

function downloadSingleImage(uri, callback) {
var ios = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
var imageURI = ios.newURI(uri, null, null); //创建图像的 URI
var imageFileName = uri.substring(uri.lastIndexOf("/") + 1);
var channel = ios.newChannelFromURI(imageURI); //创建读取 URI 指定的数据流的通道
var observer = {
onStreamComplete : function(loader, context, status, length, result) {
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
file.initWithFile(saveDirectory); //图片保存的目录
file.appendRelativePath(imageFileName);
var stream = Components.classes["@mozilla.org/network/safe-file-output-stream;1"]
.createInstance(Components.interfaces.nsIFileOutputStream);
stream.init(file, -1, -1, 0);
var bstream = Components.classes["@mozilla.org/binaryoutputstream;1"]
.createInstance(Components.interfaces.nsIBinaryOutputStream);
bstream.setOutputStream(stream);
bstream.writeByteArray(result, length); //把图片流的全部字节写入输出文件流中
if (stream instanceof Components.interfaces.nsISafeOutputStream) {
stream.finish();
}
else {
stream.close();
}
if (typeof callback == "function") {
callback();
}
}
};
var streamLoader = Components.classes["@mozilla.org/network/stream-loader;1"]
.createInstance(Components.interfaces.nsIStreamLoader);
streamLoader.init(channel, observer, null);

清单 9. 下载用户选择的全部图片的 JavaScript 方法

function download() {
var rows = document.getElementById("imagesContainer");
var checkboxes = rows.getElementsByTagName("checkbox");
var imageUrls = [];
for (var i = 0, n = checkboxes.length; i < n; i++) {
if (checkboxes[i].checked) {
imageUrls.push(checkboxes[i].getAttribute("imageUrl")); //用户选择的图片的 URL
}
}
var progressmeter = byId("downloadProgress");
progressmeter.style.visibility = "visible";
var total = imageUrls.length, step = 100 / total, current = 0;
for (var i = 0; i < total; i++) {
downloadSingleImage(imageUrls[i], function() {
var value = parseInt(progressmeter.value); //更新进度条
progressmeter.value = value + step;
});
}
close();
}

最后再说一声O(∩_∩)O谢谢 如果改正完毕 麻烦544821985@qq.com通知一声
...全文
32 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧