+ -
当前位置:首页 → 问答吧 → discuz远程图片下载并保存到服务器插件

discuz远程图片下载并保存到服务器插件

时间:2008-08-28

来源:互联网

简介:
适用版本discuz6.1.0版本。
此插件是很多论坛朋友都需要的功能,但discuz考虑到安全及布局问题,始终没有为广大站长提供此功能。为此一起买主机团购网为大家做了这个插件,此插件采用官方推荐的钩子方式。安装方便,卸载方便干净,系统升级方便希望能方便广大网友。但您在使用此插件前必须清楚可能存在的风险,正如discuz所说,让一个普通的用户任意下载远程文件到服务器上对服务器的安全绝对是一大挑战,因此您务必要小心。
本插件可以下载目前大部分图片文件,默认是不支持无图片后缀的图片文件下载,如新浪博客图片就没有后缀,大家可以去看看,但为了一起买主机团购网下一步DISCUZ自动采集、内容发布插件的开发,在此还是为站长提供了此功能,你可以在./plugins/17buyhost/17buyhost.inc.php 文件中找到一段关于图片获取的正则说明,说明中有两种正则表达式,另外一种就是可以下载新浪等无图片后缀的图片文件,你只要用另外一种正则代替当前正则就可以了。出于安全考虑,不建议你这么做。我们会针对权限控制进行升级,当然你们也可以自己升级。
另httpdown.class.php是一个比较完整的HTTP下载类,大家可以用来用PHP下载除脚本之外的任何文件。
安装:
1、将17buyhost文件夹拷贝到plugins目录下。进入后台-->扩展-->导入-->/plugins/17buyhost/discuz_plugin_picture.txt导入。

2、打开include/newreply.inc.php在约229行找到$pinvisible = $modnewreplies ? -2 : 0;
在其后面插入eval($hooks['picture_down']); 保存。

3、打开include/newthread.inc.php在约364行找到$pinvisible = $modnewreplies ? -2 : 0;
在其后面插入eval($hooks['picture_down']); 保存。

安装完成。

卸载:
在后台删除插件,然后在上面两个文件中删除相应的行,在plugins目录下删除17buyhost文件夹。


由于安装此插件后发过的帖子的图片都是本地化的了,如果在编辑中在运行插件的话等于无谓的消耗了系统资源.因此插件没在这挂钩子,但如果,如果安装插件之前论坛已经有很多图片是远程的话,你可以通过下面的办法,采用编辑的方式重新保存一下就可以本地化了.
include/editpost.inc.php 中约765行 复制内容到剪贴板 代码message = preg_replace('/\[attachimg\](\d+)\[\/attachimg\]/is', '[attach]\1[/attach]', $message);
后加上 复制内容到剪贴板 代码:eval($hooks['picture_down']);
等图片本地化了之后把这句在删除.可以节约系统资源.

由于这几天在重新设计DISCUZ论坛爬虫的算法,没有太多的时间为个人专门做批量转化程序,但如果需要的人多的话,请留个言,我抽空做个批量转化工具.

作者: 我爱PHP   发布时间: 2008-08-28