Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[采集] 让supesite在发表文章的时候自动下载远程图片

[复制链接]
skysideme 发表于 2010-8-6 17:21:30 | 显示全部楼层 |阅读模式
本帖最后由 skysideme 于 2010-8-6 17:22 编辑

由于supesite官方不再更新,让一大批新手不在过问supesite,真是遗憾!不过supesite是一个相当好的cms,有点php功底的玩家用它做二次开发是很妙的事。

为了造福喜欢做伪原创的各大站长,经常crtl+c和crtl+V的supesite爱好者。

遂决定小小的改造一下前台发贴的功能,自动下载远程图片本地化。(以后会根据需要进行更新。米花网sun 原文链接:http://www.mihua.net/list/1/1540.htm
修改如下:

在source目录的cp_news.php文件查找 (约70行左右)

$_POST['message'] = preg_replace_callback("/src\=(.{2})([^\>\s]{10,105})\.(jpg|gif|png)/i", 'addurlhttp', scensor($_POST['message']));

替换为:
$_POST['message'] = preg_replace_callback("/src\=(.{2})([^\>\s]{10,105})\.(jpg|gif|png)/i", 'get_image_save', scensor($_POST['message']));


然后在文件头部加入以下代码。

$funcFile='./function/common.func.php';
include_once($funcFile);

/** save image保存远程图片 */
function get_image_save($mat){
static $files;
if(!isset($files[$mat[2]])){
  $imgurl=$mat[2].'.'.$mat[3];   
   
   if(!strstr($mat[2], 'www.mihua.net') && strstr($mat[2], 'http://')){
   
      $maxsize=0;
     $showTime=time();
     $Nowtime=date('d-his',$showTime);
     $NowMonth=date('m',$showTime);
     $NowYear=date('Y',$showTime);
     $url_localImg='/info/attachments/u'.$NowYear.'/'.$NowMonth.'/'.$Nowtime.'.'.$mat[3];
      
     $s_dir2= './attachments';
     $s_dir3=$s_dir2.'/u'.$NowYear;
     $store_dir=$s_dir3.'/'.$NowMonth;

     $store_file=$store_dir.'/'.$Nowtime.'.'.$mat[3];

     $content = sreadfile($imgurl, 'rb', 1, $maxsize);
     if(!empty($content))
     {
      if (!file_exists($store_dir)){
          //$msg=$msg.' not exist:'.$store_dir;
           if (!file_exists($s_dir2)) mkdir($s_dir2,0777);
          if (!file_exists($s_dir3)) mkdir($s_dir3,0777);
          if (!file_exists($store_dir))
          mkdir($store_dir,0777);

          }
      if (file_exists($store_dir))
      file_put_contents($store_file,$content);
      
     }
     //else $msg=$msg.' get remote img failed!';
     
   return 'src=\"'.$url_localImg;

   }else{
    $files[$mat[2]] = $mat[0];
    return 'src=\"'.$imgurl;
   }
  }
  return $files[$mat[2]];
}

保存后试试吧,应该还有bug,比如远程图片链接没有以http开头的话就下载不了,还有附件路径不会保存到数据库,文件多了就会难以维护。本地保存的图片暂不能加图片水印。图片的路径在程序里面写死了,改动不是很方便。后台admin编辑的时候也不会下载远程图片,还要在别的地方改,似乎不在cp_news.php这个文件。

欢迎大家拍砖,提供修改意见。或者自己修改完善后告知我一下下。
问题用户 发表于 2010-8-9 11:00:03 | 显示全部楼层
用采集不得了,手动太麻烦了吧
回复

使用道具 举报

whitewind 发表于 2010-8-9 16:09:43 | 显示全部楼层
我非常需要这个功能,希望早日开发出可以在数据库中记录路径的功能
回复

使用道具 举报

croho 发表于 2010-8-10 13:31:08 | 显示全部楼层
总得来说是个不错的开始
回复

使用道具 举报

hisbee 发表于 2011-1-17 11:16:52 | 显示全部楼层
不错的方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 13:02 , Processed in 0.046766 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表