帝国cms的远程保存图片,不能紧跟时代。出现了两个问题。
一个问题是,远程图片地址不带扩展名,无法保存;另外一个问题是远程图片地址不带协议,无法保存。
第一个问题,我们前文已经解决。思路是对远程图片地址做一次head请求,根据返回的结果确地图片扩展名。
今天我们来解决第二个问题。比如有图片url地址为:
//img2.tgbus.com/i/792_446/cms3.0/2018/0727/20180727161953-1766-87609.jpg
这样的地址无法自动下载到本地,因为帝国判读这不是一个合格的url地址。但是,以前不是,现在是了。那怎么办?
帝国二开助手容易查到,关键的函数是:
帝国二开助手友情提醒:函数DoTranUrl位于文件/e/class/connect.php#//远程保存 中。 //远程保存 function DoTranUrl($url,$classid)
在这个函数里,查找
//处理地址 $url=trim($url);
在其后增加一条语句:
if(substr($url,0,2)=='//')$url='http:'.$url;
保存即可。
我的测试环境是帝国cms7.5+ utf8 ,这样修改后,顺利的远程保存了不带协议的图片。