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

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

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

灵感来源于: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数据库语句 DEDESQL命令批量替换 SQL执行语句

1.更改文章中的内容update dede_addonarticle set body=replace(body,'原来的字符','替换后的字符') 例如:update dede_addonarti...

dede织梦系统升级后,dedecms pagelist 去掉li

首先说文章列表页:对应的类文件是:查找/include/arc.listview.class.php按Ctrl+H键,查找全部替换为空格全部替换为空格全部替换为空格保存,覆盖原文件即可.列表页pagelist 去掉li 对应的类文件是:/i...

自动文章关键词后链接不变色的方法

include/ 目录下,arc.archives.class.php,在源代码1207行$kaarr[] = "<a href='$key_url' target='_blank'>$...

dede织梦data目录正确迁移及引起的问题解决方法

dede织梦data目录正确迁移及引起的问题解决方法

教程1:关于将dede织梦data目录迁移出web目录织梦官方提供了一个教程,但是如果你是按照他们提供的教程做的话会出现很多问题。比如验证码问题, 图片显示问题等等一大堆。织梦官方这种是很不负责任的,因为那个教程有很大缺陷。这里跟大家提供一...

dede系统自定义变量删除方法

Delete FROM dede_sysconfig where varname="这里写你自己写的名称"...

dedecms自动生成tag方法

织梦dedecms可以自动生成keywords,但是却没有办法自动生成tag,系统后台的TAG标签管理生成的标签实际上就是复制了keywords,让后插入tag中。 所以要自动生成tag的话,只需要把keywords的值赋给tag...

发表评论

访客

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