phpcms不能保存远程图片怎么办 - 广告联盟评测网



  1. 广告联盟评测网 > 流量运营 >

phpcms不能保存远程图片怎么办

phpcms不能保存远程图片怎么办?

phpcms v9默认情况下只能保存http协议的远程图片,当然,你也可以自己设置是否保存。不知道在哪里设置?后台->内容->模型管理->文章模型-字段管理->content字段-修改,见下图:

言归正传,现在有很多网站为了安全,启用了https协议,从这些网站上复制过来的图片也是https的,这种情况下phpcms是不能够自动保存远程图片的。修改phpcms/libs/classes/attachment.class.php文件中的fillurl函数就可以了,如下:

/** * 补全网址 * * @paramstring$surl源地址 * @paramstring$absurl相对地址 * @paramstring$basehref网址 * @returnstring网址 * 增加对远程https协议下图片的本地化保存 */ function fillurl($surl, $absurl, $basehref = &#39;&#39;) { if($basehref != &#39;&#39;) { $preurl = strtolower(substr($surl,0,6)); if($preurl==&#39;http://&#39; || $preurl==&#39;https://&#39; || $preurl==&#39;ftp://&#39; ||$preurl==&#39;mms://&#39; || $preurl==&#39;rtsp://&#39; || $preurl==&#39;thunde&#39; || $preurl==&#39;emule://&#39;|| $preurl==&#39;ed2k://&#39;) return $surl; else return $basehref.&#39;/&#39;.$surl; } $i = 0; $dstr = &#39;&#39;; $pstr = &#39;&#39;; $okurl = &#39;&#39;; $pathStep = 0; $surl = trim($surl); if($surl==&#39;&#39;) return &#39;&#39;; $urls = @parse_url(SITE_URL); $HomeUrl = $urls[&#39;host&#39;]; $BaseUrlPath = $HomeUrl.$urls[&#39;path&#39;]; $BaseUrlPath = preg_replace("/\/([^\/]*)\.(.*)$/",&#39;/&#39;,$BaseUrlPath); $BaseUrlPath = preg_replace("/\/$/",&#39;&#39;,$BaseUrlPath); $pos = strpos($surl,&#39;#&#39;); if($pos>0) $surl = substr($surl,0,$pos); if($surl[0]==&#39;/&#39;) { $okurl = &#39;http://&#39;.$HomeUrl.&#39;/&#39;.$surl; } elseif($surl[0] == &#39;.&#39;) { if(strlen($surl)<=2) return &#39;&#39;; elseif($surl[0]==&#39;/&#39;) { $okurl = &#39;http://&#39;.$BaseUrlPath.&#39;/&#39;.substr($surl,2,strlen($surl)-2); } else { $urls = explode(&#39;/&#39;,$surl); foreach($urls as $u) { if($u=="..") $pathStep++; else if($i<count($urls)-1) $dstr .= $urls[$i].&#39;/&#39;; else $dstr .= $urls[$i]; $i++; } $urls = explode(&#39;/&#39;, $BaseUrlPath); if(count($urls) <= $pathStep) return &#39;&#39;; else { $pstr = &#39;http://&#39;; for($i=0;$i<count($urls)-$pathStep;$i++) { $pstr .= $urls[$i].&#39;/&#39;; } $okurl = $pstr.$dstr; } } } else { $preurl = strtolower(substr($surl,0,6)); if(strlen($surl)<7) $okurl = &#39;http://&#39;.$BaseUrlPath.&#39;/&#39;.$surl; elseif($preurl=="http:/" || $preurl=="https:" ||$preurl==&#39;ftp://&#39; ||$preurl==&#39;mms://&#39; || $preurl=="rtsp://" || $preurl==&#39;thunde&#39; || $preurl==&#39;emule:&#39;|| $preurl==&#39;ed2k:/&#39;) $okurl = $surl; else $okurl = &#39;http://&#39;.$BaseUrlPath.&#39;/&#39;.$surl; } $preurl = strtolower(substr($okurl,0,6)); if($preurl==&#39;ftp://&#39; || $preurl==&#39;mms://&#39; || $preurl==&#39;rtsp://&#39; || $preurl==&#39;thunde&#39; || $preurl==&#39;emule:&#39;|| $preurl==&#39;ed2k:/&#39;) { return $okurl; } else { $okurl = preg_replace(&#39;/^(http:\/\/)/i&#39;,&#39;&#39;,$okurl); $okurl = preg_replace(&#39;/^(https:\/\/)/i&#39;,&#39;&#39;,$okurl); $okurl = preg_replace(&#39;/\/{1,}/i&#39;,&#39;/&#39;,$okurl); return &#39;http://&#39;.$okurl; } }登录后复制

这篇流量运营《phpcms不能保存远程图片怎么办》,目前已阅读71次,本文来源于php中文,在2024-10-26发布,该文旨在普及流量运营知识,如果你有任何疑问,请通过网站底部联系方式与我们取得联系

  • 上一篇:phpcms不限模型搜索的设置方法
  • 下一篇:phpcms v9重名无法通过怎么办