phpcms不能保存远程图片怎么办?
phpcms v9默认情况下只能保存http协议的远程图片,当然,你也可以自己设置是否保存。不知道在哪里设置?后台->内容->模型管理->文章模型-字段管理->content字段-修改,见下图:
言归正传,现在有很多网站为了安全,启用了https协议,从这些网站上复制过来的图片也是https的,这种情况下phpcms是不能够自动保存远程图片的。修改phpcms/libs/classes/attachment.class.php文件中的fillurl函数就可以了,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* 补全网址
*
* @paramstring$surl源地址
* @paramstring$absurl相对地址
* @paramstring$basehref网址
* @returnstring网址
* 增加对远程https协议下图片的本地化保存
*/
function fillurl($surl, $absurl, $basehref = ) {
if($basehref != ) {
$preurl = strtolower(substr($surl,0,6));
if($preurl==http:// || $preurl==https:// || $preurl==ftp:// ||$preurl==mms:// || $preurl==rtsp:// || $preurl==thunde || $preurl==emule://|| $preurl==ed2k://)
return $surl;
else
return $basehref./.$surl;
}
$i = 0;
$dstr = ;
$pstr = ;
$okurl = ;
$pathStep = 0;
$surl = trim($surl);
if($surl==) return ;
$urls = @parse_url(SITE_URL);
$HomeUrl = $urls[host];
$BaseUrlPath = $HomeUrl.$urls[path];
$BaseUrlPath = preg_replace("//([^/]*).(.*)$/",/,$BaseUrlPath);
$BaseUrlPath = preg_replace("//$/",,$BaseUrlPath);
$pos = strpos($surl,#);
if($pos>0) $surl = substr($surl,0,$pos);
if($surl[0]==/) {
$okurl = http://.$HomeUrl./.$surl;
} elseif($surl[0] == .) {
if(strlen($surl)<p>其中https为新增的,原来没有。</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/7fc7563c4182" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">PHP免费学习笔记(深入)</a>”;</p><p>PHP中文网,大量的免费<a href="https://www.php.cn/cms/phpcms/" target="_blank">PHPCMS教程</a>,欢迎在线学习!</p>
以上就是phpcms不能保存远程图片怎么办的详细内容,更多请关注php中文网其它相关文章!