DedeCms 防盗链无法下载远程图片的解决方法

DedeCms 防盗链无法下载远程图片的解决方法,第1张

概述在使用DEDECMS时,很多时候从一些网站复制的内容时,其中的图片,保存时不能把远程图片下载到本地,像新浪博客,网易等一些大型网站图片有做防盗链处理,图片地址并没有后辍名!因此在使用dedecms默认的下载远程功能没办法实现!在发现了此问题,分析了下,发现其实要解决很简单,发现DEDECMS在检索远… 在使用Dedecms时,很多时候从一些网站复制的内容时,其中的图片,保存时不能把远程图片下载到本地,像新浪博客,网易等一些大型网站图片有做防盗链处理,图片地址并没有后辍名!因此在使用Dedecms默认的下载远程功能没办法实现!

在发现了此问题,分析了下,发现其实要解决很简单,发现Dedecms在检索远程图片时的正则加了图片格式匹配;

Dedecms匹配的正则:preg_match_all("/(src)=["|'| ]{0,}(http://([^>]*).(gif|jpg|png))/isU",$body,$img_array);

而向新浪博客图片:http://static2.photo.sina.com.cn/orignal/54a625bft848ec4ffa561&690&690 是没有图片后辍的,所在不能匹配下载了!

找到了问题,就知道怎么改了!

找到Dedecms文件 /dede/inc/inc_archives_functions.PHP,找到函数

/获得文章body里的外部资源

function GetCurContent($body,&$litpic,$@R_301_6843@litpic)

//获得文章body里的外部资源

function GetCurContent($body)

大概在11行和89行把匹配远程图片的规则

preg_match_all("/(src)=["|'| ]{0,$img_array);

改成

preg_match_all("/src=["|'|s]{0,}(http://([^>]*))("|'|s)/isU",$img_array);

就OK了

当然Dedecms这样做是有它道理的,这样只能匹配图片,不会匹配到像Js,FLASH文件,但这样也有很多不方便,因为我们在编辑内容时,就能识别这是一个什么文件了!

总结

以上是内存溢出为你收集整理的DedeCms 防盗链无法下载远程图片的解决方法全部内容,希望文章能够帮你解决DedeCms 防盗链无法下载远程图片的解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/1003322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存