帝国cms有远程保存图片的功能。但是现在有的网络图片进化的不带尾巴了,就是不带扩展名了。
帝国cms的远程保存就卡壳了,不能保存这图片了。怎么办呢?可以这样修改帝国cms源代码。
友情警告:修改源代码有风险,最好先备份下额。
1.让帝国cms对这些不带尾巴的链接能正确获得扩展名
修改 e/class/connect.php中的函数 GetFiletype
//取得文件扩展名
function GetFiletype($filename){
//begin adding by jiuhecai
if(strstr($filename,"://")){
$pathinfo = pathinfo($filename);
if(array_key_exists("extension",$pathinfo)){
return strtolower(".".RepGetFiletype($pathinfo["extension"]));
}
$mimes=array(
'image/bmp'=>'bmp',
'image/gif'=>'gif',
'image/jpeg'=>'jpg',
'image/png'=>'png',
'image/x-icon'=>'ico',
'image/webp'=>'webp'
);
if(($headers=get_headers($filename, 1))!==false){
$type=$headers['Content-Type'];
if(isset($mimes[$type])){
return strtolower(".".RepGetFiletype($mimes[$type]));
}
}
}
//end adding by jiuhecai
$filer=explode(".",$filename);
$count=count($filer)-1;
return strtolower(".".RepGetFiletype($filer[$count]));
}
原理也简单,不带扩展名为啥浏览器能识别,是因为头信息里告诉浏览器了,所以我们用外交官get_headers和图片服务器谈谈,让她乖乖告诉我们这图片类型。
2.让帝国cms能愿意接受不带尾巴的连接
修改e/class/functions.php中的函数RepImg函数为:
//替换图片标签
function RepImg($text,$copyflash){
global $ecms_config;
$exp1="";
这样,嘿嘿,爽了!