日历
网志分类
· 所有网志 (163)
· 吃喝 (3)
· 工作 (35)
· 读书 (7)
· 出游 (2)
· music (0)
· 随想 (13)
· 情感 (3)
· 算法练习 (88)
· 生活 (10)
· 未分类 (2)
站内搜索
友情链接
· 我的歪酷 非非共享界
· 芹菜
· Crazyb0y

订阅 RSS

0021485

歪酷博客

芹菜地


lovely *,*   {07/04/30/00:44}


« 上一篇: zoj 2166
维宽 @ 2008-06-23 21:49

DownThemAll(dTa)是目前firefox下用得最多的下载插件,它支持多线程下载,断点续传等,使用很方便。美中不足的是,dTa对http协议下载支持很好,但对ftp协议下载却几乎没有做任何扩展,跟firefox自带的下载工具功能上几乎没有什么区别,不能暂停,不能断点续传,不支持多线程下载等。但实际上,xunlrunner库里对ftp的实现是完全的,只是因为dTa没有利用到而已。要用到这些功能也很简单,下面就介绍如何更改dTa,使它对ftp的支持更好一些。

首先到dTa这个扩展的目录下,通常是~user/.mozilla/****.default/extensions/{DDC359D1-844A-42a7-9AA1-88A850A938A8} /chrome下,{}中包含的是dTa的当前uuid.

把chrome.jar解压到当前目录, linux下是unzip chrome.jar就行了;再将chrome.jar复制为chrome.orig.jar,以便后面操作失误时可以恢复。

再到当前目录下的content/dta目录下,这里有一个manager.js,它是dta文件下载的核心模块,也是我们要更改的地方。

打开manager.js文件,跳到1693行左右,这里有一个try catch语句块。try部分主要是为了从某一部分开始请求http文件,catch部分为空。在整个catch语句里,我们加上自己对ftp协议的处理,它也是一个try catch语句块:
        try {
            let rc = this._chan.QueryInterface(Ci.nsIResumableChannel);
            rc.resumeAt(c.start+c.written, null);
        } catch(ex) {
        }
这个语句块判断下载的文件是否可以续传,如果可以,就跳到它要续传的位置。

再在文件中跳到2038行左右,这里有一个单独的语句d.resumable=false; 我们要把这句话替换成一个如下的try catch语句块:
        try {
            let rc = this._chan.QueryInterface(Ci.nsIResumableChannel);
            d.resumable = true;
        } catch(ex) {
            d.resumable = false;
        }
它也是判断当前下载文件的可续传性。

保存文件manager.js,退出。我们再回到chrome.jar所在的目录中去,把更新后的manager.js文件加进去.  zip -r chrome.jar content/dta/manager.js。

重新启动firefox,这下dta管理器中的ftp文件就可以被暂停了。由于ftp站点通常限制了同ip的访问数,多线程下载通常用不上。这没关系,反正修改后的dta现在是支持多线程下载和续传了。



曾经的这一天...



评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定