从建站 到营销 全程无忧!
您当前的位置:首页 > 新闻资讯 > 企业建站常识

UCMS添加文章正文中的远程图片自动保存到本地方法

发表时间:2021-06-03 14:39:48    浏览:3547 次

UCMS添加文章正文中的远程图片自动保存到本地方法

远程图片保存到本地全栏目可用(BY:玉龙 QQ:33942704)


使用方法:把下列代码全部复制到ucms/admin_config.php文件里面


//保存远程图片到本地

$query = $GLOBALS['db'] -> query("SELECT * FROM ".tableex('channel')." order by corder asc"); //列出所有栏目
$all_category_hook = $GLOBALS['db'] -> fetchall($query);
foreach($all_category_hook as $key=>$val) {
          admin_hook($val['cid'],'addposted;editposted','auto_save_image'); //使用钩子
}
//开始保存图片
function auto_save_image() {
    //保存路径
$content = $_POST['content'];
$myweb = "http://".$_SERVER["HTTP_HOST"];//本站域名下文件不保存

$d = date('Ymd', time());//按日期生成文件夹
$dirslsitss = $_SERVER ['DOCUMENT_ROOT'].'/uploadfile/image/'.$d;//分类是否存在
if(!file_exists($dirslsitss)){
mkdir($dirslsitss,0777,true);
}

//匹配图片的src
preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $content,$match);
foreach($match[1] as $imgurl){
$imgurl = $imgurl;

//如果是本站图片则跳过下载
if(is_int(strpos($imgurl,'http')) && strpos($imgurl,$myweb) === false){

$arcurl = $imgurl;
//$img=file_get_contents($arcurl);//下载图片
$img=getImg($arcurl);//curl下载图片,支持https
//根据图片的路径获取图片属性值
$imgAttr = get_headers($arcurl, true );
//取得图片后缀名
$itype=$imgAttr['Content-Type'];
if(!preg_match("#\.(jpg|gif|png)#i",$itype))
{
if($itype=='image/gif')
{
$itype = ".gif";
}
else if($itype=='image/png')
{
$itype = ".png";
}
else
{
$itype = '.jpg';
}
}

if(!empty($img)) {
//保存图片到服务器
$fileimgname = getRandChar(10).$itype;//生成10位数的随机字符文件名
$filecachs=$dirslsitss."/".$fileimgname;
$fanhuistr = file_put_contents($filecachs, $img );
$saveimgfile = "/uploadfile/image/".$d."/".$fileimgname;
$content=str_replace($imgurl,$saveimgfile,$content);//替换内容中图片地址
}
}
global $thisid;
$query = $GLOBALS['db'] -> query("update ".tableex('article')." SET content='".$content."' WHERE id=".$thisid."");
   }
}
//生成随机字符串
function getRandChar($length){
$str = null;
$strPol = "0123456789abcdefghijklmnopqrstuvwxyz";//小写字母以及数字
$max = strlen($strPol)-1;
   
for($i=0;$i<$length;$i++){
$str.=$strPol[rand(0,$max)];
  }
  return $str;
}
//curl下载图片
function getImg($url) {
   $ch = curl_init ();
   curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
   curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );//跳过ssl验证
   curl_setopt ( $ch, CURLOPT_URL, $url );
   ob_start ();
   curl_exec ( $ch );
   $return_content = ob_get_contents ();
   ob_end_clean ();
   return $return_content;
}

 

上一篇:苹果电脑Mac安装 Windows 10 双系统教程

下一篇:压缩清理解决mssql数据库日志(ldf文件)过大问题的办法

 
百度搜索推广 |公司简介 |人才招聘 |付款方式 |联系方式
恩施市百捷在线网络科技有限公司 Copyright © 2012-2021 网址:www.esbaidu.com
电话:15587589530 传真:15587589530 联系人:邹经理
地址:恩施市火车站万福国际写字楼613 Email:zou@esbaidu.com 备案号:鄂ICP备16001060号-8
公安备案信息 鄂公网安备 42280102000263号 网络经济主体信息