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

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

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

灵感来源于: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

分享给朋友:

相关文章

dede织梦自适应模板首页或者列表图片错位变形解决办法,自定义缩略图尺寸

这篇文章主要为大家详细介绍了织梦自适应模板首页或者列表图片错位变形或者失真解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。     在给用户制作织梦自适应模板的时候...

DEDE 5.7 PHP5.4 5.5 编辑器变空白的解决方案

追根溯源,是htmlspecialchars惹的祸,PHP 5.4后GBK编码下默认不支持中文,转换后内容为空,太TM坑爹了!UTF-8编码没有任何问题。解决办法:[php] view plain copy p...

dedecms安全篇:织梦文件夹目录权限设置

织梦各个目录安全详解   做织梦(dedecms)网站安全必看 1、a  因为是静态目录,并且在要生成HTML的,所以拒绝脚本执行  允许写入2、data   因为是缓存等,所以充许写入,但...

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

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

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

dede站点转移空间后,数据库要怎么连接

DEDE 服务器转移方法 方法一: 1、进旧站后台:系统管理→数据库备份。单击下部“全选”后“提交”进行备份;   2、将旧站的所有文件上传到新站点,删除install目录下的install.lock文件;   3...

utf8格式页面的iframe控件里面如何调用一个gbk页面?

iframe引用网页为乱码 主要是iframe中的引用网页中 没有显示声明编码方式,继承主页面的编码方式。因此当2者冲突时,就回出现乱码。 把<meta http-equiv="Content...

发表评论

访客

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