当前位置:首页 > 网站管理 > 正文内容

DEDE修改成七牛云图片地址 ueditor

wzccxx5年前 (2021-06-05)网站管理10

灵感来源于:http://www.dedejs.com/html/article-944-1.html ,不知道什么原因,原文作者写的比较简单,甚至对数据库的修改都没有完善,这里发挥一下。


第一步,参考上述文章,注册七牛帐号,开通空间,将织梦的“远程图片本地化”设置为否并集成七牛的SDK。


第二步, 打开/include/dialog/select_images.php文件,在里面找到如下代码:


  1. $dh = dir($inpath);  

在下面添加:


  1. $qiniudomain = '七牛云存储域名';  

记得把“七牛云存储域名”改成你的七牛云存储地址。



然后再找到:

  1. $reurl = $reurl;  

所有的都替换为:


  1. $reurl = $qiniudomain.$reurl;  


第三步,再打开/include/dialog/select_images_post.php文件,在里面找到下面这句代码:


  1. $info = '';  

在其上面添加如下代码:


  1. //上传到七牛云存储start  

  2. require_once(dirname(__FILE__)."/../qiniu/io.php");  

  3. require_once(dirname(__FILE__)."/../qiniu/rs.php");  

  4. $qiniupath = substr($activepath,1);  

  5. $bucket = '云空间名';  

  6. $qiniudomain = '七牛云存储域名';  

  7. $key = $qiniupath."/".$filename;  

  8. $client = new Qiniu_MacHttpClient(null);  

  9. $putPolicy = new Qiniu_RS_PutPolicy("$bucket:$key");  

  10.   

  11. $upToken = $putPolicy->Token(null);  

  12.   

  13. $putExtra = new Qiniu_PutExtra();  

  14. $s = time();  

  15. list($ret$err) = Qiniu_PutFile($upToken$key$fullfilename$putExtra);  

  16. //上传到七牛云存储end  

注意:将里面的“云空间名”修改为刚刚创建的空间名称,“七牛云存储域名”替换为刚刚第一步里面复制的域名。


然后找到:

  1. \''.$fileurl.'\'  

替换成:


  1. \''.$qiniudomain.$fileurl.'\'  


还有,找到:


  1. $dsql->ExecuteNoneQuery($inquery);  

在他的上面找到:


  1. '".$activepath."/".$filename."'  

改为:


  1. '".$qiniudomain.$activepath."/".$filename."'  


否则数据库中的记录还是本地的,别的文章插入图片的时候引用的就是错的。

至此,上传文章图片的时候保存和引用的就全是云存储上的图片了!


还有人想把多媒体和文件等附件也保存到七牛云上,以文件上传为例,需要修改的是select_soft.php和select_soft_post.php文件,改法相同,唯一不同的是在最后查找:

  1. $dsql->ExecuteNoneQuery($inquery);  

在他的上面找的是:

  1. '".$fullfileurl."'  

改为:

  1. '".$qiniudomain.$fullfileurl."'  



多媒体文件修改的是select_media.php和select_media_post.php文件,没有media业务就没测试。


有人还想把文档的缩略图也保存到七牛上,缩略图因为牵扯到裁剪所以比文件复杂的多,需要修改的是以下文件。

打开/include/helpers/upload.helper.php文件,在里面找到下面这句代码:


  1. $title = $filename.'.'.$file_sname;  

在上面的“//保存信息到数据库”上面添加:



  1. 上传到七牛云存储start  

  2. require_once(dirname(__FILE__)."/../qiniu/io.php");  

  3. require_once(dirname(__FILE__)."/../qiniu/rs.php");  

  4. $qiniupath = substr($activepath,1);  

  5. $bucket = '云空间名';  

  6. $qiniudomain = '七牛云存储域名';  

  7. $key = preg_replace('/\//','',$fileurl,1);  

  8. $client = new Qiniu_MacHttpClient(null);  

  9. $putPolicy = new Qiniu_RS_PutPolicy("$bucket:$key");  

  10. $upToken = $putPolicy->Token(null);  

  11. $putExtra = new Qiniu_PutExtra();  

  12. $s = time();  

  13. list($ret$err) = Qiniu_PutFile($upToken$key$cfg_basedir.$fileurl$putExtra);  

  14. //上传到七牛云存储end  

注意:这段代码与图片上传部分是不一样的,因为二者的源码文件编写的不一样。


在这段后面查找:

  1. $dsql->ExecuteNoneQuery($inquery);  

靠近他的上面找的是:

  1. '$fileurl'  

改为:

  1. '$qiniudomain"."$fileurl'  


然后在/dede/imagecut.php中找到:


  1. ifempty($isupload) )  

在他的上面“//如果从其它图中剪出, 保存附件信息”的上面添加:



  1. //上传到七牛云存储start   by CMS资源网www.dedejs.com  

  2. require_once(dirname(__FILE__)."/../include/qiniu/io.php");  

  3. require_once(dirname(__FILE__)."/../include/qiniu/rs.php");  

  4. $qiniupath = substr($activepath,1);  

  5. $bucket = '云空间名';  

  6. $qiniudomain = '七牛云存储域名';  

  7. $key = preg_replace('/\//','',$ddpicok,1);;  

  8. $client = new Qiniu_MacHttpClient(null);  

  9. $putPolicy = new Qiniu_RS_PutPolicy("$bucket:$key");  

  10. $upToken = $putPolicy->Token(null);  

  11. $putExtra = new Qiniu_PutExtra();  

  12. $s = time();  

  13. list($ret$err) = Qiniu_PutFile($upToken$key$ddpicokurl$putExtra);  

  14. //上传到七牛云存储end  

注意:这里又与upload.helper.php中的不一样,老老实实复制吧



然后在它的下面找到:


  1. '$ddpicok','$ddpicok'  

替换为:



  1. '$ddpicok','$qiniudomain"."$ddpicok'  


找到:


  1. ReturnImg("<?php echo $ddpicok; ?>");  

替换为:

  1. ReturnImg("<?php echo $qiniudomain.$ddpicok; ?>");  

这样才会返回云存储的图片地址到编辑框中。



总结

以上方法实现了DEDECmsv5.7与七牛云存储的结合,实现了文章图,缩略图和其他文件的云存储,但有两个问题没有解决:1,本地还是会有,只能隔一段时间手动删除了,如果嫌占地方的话;2、缩略图使用原图时,返回的地址还是本地的,解决方法就是:裁剪一次全图吧可怜。再有个小毛病就是数据库中记录的文件大小是未裁剪前的,目前没发现有什么影响。


附赠

经过这些改动,会员头像部分你会发现也自动同步到七牛云存储上了,只是引用的时候还是本地,所以我们更改一下member/edit_face.php,找到:


  1. "UPDATE `#@__member` SET `face` = '$face' WHERE mid='{$cfg_ml->M_ID}' "  

替换为:


  1. "UPDATE `#@__member` SET `face` = '$qiniudomain"."$face' WHERE mid='{$cfg_ml->M_ID}' "  


好了,会员的头像都会显示云存储上的图片,并且更新的时候会自动替换掉。


至于会员上传文档图片的改动,因为没有开所以没有测试,应该是在upload.helper.php的下半部分代码中,自己试试吧



扫描二维码推送至手机访问。

版权声明:本文由泰山森林发布,如需转载请注明出处。

本文链接:https://wzc.tzts.ltd/post/28.html

分享给朋友:

相关文章

input框中自动展示当前日期 yyyy/mm/dd

<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title...

网页嵌套的方法

1.<iframe name="content_frame" marginwidth=0 marginheight=0 width=100% height=30 src="import.htm"...

织梦dedecms自定义属性增加、修改和删除的方法

织梦dedecms自定义属性增加、修改和删除的方法

织梦的文章自定义属性默认的只有8个,如下图。但有时候我们需要更多的flag属性。本文就来讲解一下织梦自定义属性的添加、删除、修改的几种方法。1、修改现有的自定义属性      如上...

织梦(dedecms)文档关键词维护

织梦(dedecms)文档关键词维护

首先解释下文档关键词维护中这个“频率”的意思。我们知道,织梦默认设置为30,很多朋友都将其看作是锚文本的链接数量。其实不然,这个频率只是表示关键词的热度,同动易系统的关键词权重等同。只是,织梦在这个地方处理的不好。所以,笔者建议最好不要改动...

解决织梦dedecms关键词交叉(重叠)替换问题,关键词维护

找到路径目录include中的arc.archivew.class.php文件下载到本地并打开。查找function ReplaceKeyword($kw,&$body)代码。然后一直到最下面。替换以下的代码。function Re...

BT宝塔面板安装提示cannot verify dg2.bt.cn's certificate, issued by ‘CN=sslTrus (RSA) OV CA,O=

【待反馈】BT不能安装软件了小藏文玩发表在Linux面板2023-5-15 10:18[复制链接]81779为了能快速了解并处理您的问题,请提供以下基础信息:面板、插件版本:免费版   7.9.10系统版本:ubtunt...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。