supesite前台发文章自动下载远程图片(改进版) - 小众知识

supesite前台发文章自动下载远程图片(改进版)

2013年01月27日 14:18:05 苏内容
  标签:
阅读:7328

原来发过一篇supesite前台发文章自动下载远程图片。改动比较少。但维护不方便,发了文章后,光看图片不知道是哪篇文章的:

http://content.predream.cn/?action-viewnews-itemid-10

所以改进了一下,其实也就是在下载图片时把图片的名字带上itemid号码,这样就很好找了。

加上函数:

/** save image保存远程图片 */

$g_ItemID=0;

function get_image_save($mat){

 global $g_ItemID;

 static $files;

 if(!isset($files[$mat[2]])){

  $imgurl=$mat[2].'.'.$mat[3];

   

   if(!strstr($mat[2], $GLOBALS['base_url']) && strstr($mat[2], 'http://')){

    

      $maxsize=0;

     $showTime=time();

     $Nowtime=date('-dhis',$showTime);

     $NowMonth=date('m',$showTime);

     $NowYear=date('Y',$showTime);

     $url_localImg='http://www.mihua.net/attachments/u'.$NowYear.'/'.$NowMonth.'/'.$g_ItemID.$Nowtime.'.'.$mat[3];

      

     $s_dir2= './attachments';

     $s_dir3=$s_dir2.'/u'.$NowYear;

     $store_dir=$s_dir3.'/'.$NowMonth;

     $store_file=$store_dir.'/'.$g_ItemID.$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]];

}

查找并注释掉这一行:

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

然后查找  if(!checkperm('allowdirectpost')) {

   $itemarr['itemid'] = inserttable('spaceitems', $newsarr, 1);

在后面加上:

//by www.mihua.net  // sun

 $g_ItemID=$itemarr['itemid'];

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

好了,前台发一篇文章试试看?

扩展阅读
相关阅读