前端技术 手机教程
程序开发 平面动画
系统软件 CMS教程
CMS教程 在线手册
资源下载 网络安全
精准搜索请尝试:精确搜索

DedeCMS复制文章无法下载远程图片解决办法

2021-08-27 08:00:31 来源:原创 作者:寂静的神经

DedeCMS5.7 复制的文章无法下载远程图片到本地,网上的解决方法千篇一律,甚至还有5.1版本的文件名,这里分享本站实现的方法。

一、基础设置

首先要勾选“下载远程图片和资源”选项,其次要保证图片文件夹 uploads/allimg 存在并且有写入权限。这两点基本网上找到的解决方案中都已经提到了。

二、代码修改

实际上目前导致这个问题的原因基本是 https 问题,当年 DedeCMS5.7 发布的时候,https 还没普及,所以默认“下载远程图片和资源”功能是匹配的 http 协议,然而我们现在要下载的图片资源大多都是 https 协议。另外就是 DedeCMS5.7 默认下载远程图片和资源类 dedehttpdown.class.php 采用的也是 http 协议。

因此要解决DedeCMS复制文章无法下载远程图片的问题,我们首先要正确匹配到文章内容中使用 https 协议的远程图片,其次我们采用 curl 或者 file_get_contents 方式下载远程图片,我们打开 DedeCMS 后台根目录(默认为 dede )的下的 inc/inc_archives_function.php 文件。

将117行左右的代码:

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

修改为下面的代码,这样就可以同时匹配到 http 或 https 协议的远程图片:

preg_match_all("/src=[\"|'|\s]{0,}((http|https):\/\/([^>]*)\.(gif|jpg|png))/isU",$body,$img_array);

然后注释大约169行代码:

//$rs = $htd->SaveToBin($rndFileName);

修改为:

$image = file_get_contents($value);
$rs = file_put_contents($rndFileName, $image);

修改完成后,重新编辑文章,直接点击保存,会发现文章中的图片已经下载到本地并且修改成本地路径了。

本文关键词:远程 下载

相关文章

零五网,分享IT知识,国内顶级IT知识门户网站。

Copyright (C) www.02405.com, All Rights Reserved.

零五网 版权所有 辽ICP备13002105号-1