zoukankan      html  css  js  c++  java
  • 织梦cms网上复制图片不可用的解决方法

    背景描述:

    织梦cms采集图片集时, 需要使用织梦cms提供的"网上复制图片"的功能, 好像我这里这个功能一直不可用, 今天下定决心研究了下源代码并进行了适当修改, 将我的修改提供给大家参考

    操作步骤:

    1. 采用IE浏览器, 发布图集

     
    注: 
    复制的源网址需要清空
    粘贴源代码(如: <img src='http://icon.nipic.com/BannerPic/20170928/home/20170928155702.jpg' />)到上图的第三个框

    2. 打开dede/inc/inc_archives_functions.php文件修改下面这个函数

    /**
     * 获得HTML里的外部资源,针对图集
     *
     * @access    public
     * @param     string  $body  文档内容
     * @param     string  $rfurl  来源地址
     * @param     string  $firstdd  开始标记
     * @return    string
     */
    function GetCurContentAlbum($body, $rfurl, &$firstdd)
    {
        global $dsql,$cfg_multi_site,$cfg_basehost,$cfg_ddimg_width;
        global $cfg_basedir,$pagestyle,$cuserLogin,$cfg_addon_savetype;
        require_once(DEDEINC.'/dedecollection.func.php');
        if(empty($cfg_ddimg_width))    $cfg_ddimg_width = 320;
        $rsimg = '';
        $cfg_uploaddir = $GLOBALS['cfg_image_dir'];
        $cfg_basedir = $GLOBALS['cfg_basedir'];
        $basehost = 'http://'.$_SERVER['HTTP_HOST'];
        //$img_array = array();
        //echo "<br />body: ".$body;
        preg_match_all("/(src)=["|'| ]{0,}(http://([^>]*).(gif|jpg|png))/isU",$body,$img_array);
        $img_array = array_unique($img_array);
        //echo "<br />";
        //print_r($img_array);
        $imgUrl = $cfg_uploaddir.'/'.MyDate($cfg_addon_savetype, time());
        $imgPath = $cfg_basedir.$imgUrl;
        if(!is_dir($imgPath.'/'))
        {
            MkdirAll($imgPath,$GLOBALS['cfg_dir_purview']);
            CloseFtp();
        }
        $milliSecond = 'co'.dd2char( MyDate('ymdHis',time())) ;
        foreach($img_array as $key=>$value)
        {	
    	    for ($i = 0; $i < count($value); $i++) 
    		{
    			$value1 = $value[$i];
    			$value1 = trim($value1);
    			$value1 = str_replace("src='", "", $value1);
    			$value1 = str_replace("src=", "", $value1);
    			$value1 = str_replace("src="", "", $value1);
    		    //echo "<br />value1: ".$value1;
    			if(preg_match("#".$basehost."#i", $value1) || !preg_match("#^http://#i", $value1) 
    			|| ($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value1)))
    			{
    			    //echo "<br />continue;";
    				continue;
    			}
    			$itype =  substr($value1, -4, 4);
    			if( !preg_match("#.(gif|jpg|png)#", $itype) ) $itype = ".jpg";
    			
    			$rndFileName = $imgPath.'/'.$milliSecond.'-'.$key.'-'.$i.$itype;
    			$iurl = $imgUrl.'/'.$milliSecond.'-'.$key.'-'.$i.$itype;
    			//echo "<br /> iurl:".$iurl;
    			
    			//下载并保存文件
    			$rs = DownImageKeep($value1, $rfurl, $rndFileName, '', 0, 30);
    			if($rs)
    			{
    				$info = '';
    				$imginfos = GetImageSize($rndFileName, $info);
    				$fsize = filesize($rndFileName);
    				$filename = $milliSecond.'-'.$key.$itype;
    				//保存图片附件信息
    				$inquery = "INSERT INTO `#@__uploads`(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)
    				VALUES ('0','$filename','$iurl','1','{$imginfos[0]}','$imginfos[1]','0','$fsize','".time()."','".$cuserLogin->getUserID()."'); ";
    				$dsql->ExecuteNoneQuery($inquery);
    				$fid = $dsql->GetLastID();
    				AddMyAddon($fid, $iurl);
    				if($pagestyle > 2)
    				{
    					$litpicname = GetImageMapDD($iurl, $cfg_ddimg_width);
    				}
    				else
    				{
    					$litpicname = $iurl;
    				}
    				if(empty($firstdd) && !empty($litpicname))
    				{
    					$firstdd = $litpicname;
    					if(!file_exists($cfg_basedir.$firstdd))
    					{
    						$firstdd = $iurl;
    					}
    				}
    				@WaterImg($rndFileName, 'down');
    				$rsimg .= "{dede:img ddimg='$litpicname' text='' width='".$imginfos[0]."' height='".$imginfos[1]."'} $iurl {/dede:img}
    ";
    			}
    		}
        }
        return $rsimg;
    }
     
    备注: 替换你的代码时, 强烈建议先备份.

  • 相关阅读:
    任天堂确认账户被黑客入侵:开启双重验证是关键,会更加安全
    受疫情影响!美国大量科技初创企业要挨饿或倒闭
    泰国的IPv6功能已从约2%增至30%,部署率位于全球5名
    vue钩子函数
    vue自定义全局指令directive和局部指令directives
    vue自定义按键修饰符
    字符串padStart、padEnd填充
    vue过滤器
    vue指令v-if和v-show
    vue指令v-for和key属性
  • 原文地址:https://www.cnblogs.com/haihua85/p/8681683.html
Copyright © 2011-2022 走看看