开发者社区> 问答> 正文

织梦整合七牛云储存

七牛云提供免费的http月流量10G,对于普通的博客来说完全够用,所以本文就介绍下DeDeCMS(织梦)怎么最大化的利用七牛云来节省服务器带宽、流量、储存空间,并且提高网站的加载速度。默认的DeDeCMS是不支持七牛云的,而且官方也没再更新,所以如果安全设置不当,有可能导致网站被黑,DeDeCMS(织梦)被黑是可以降低风险或者避免的,可以按需索取。

DeDeCMS(织梦)整合七牛云储存的优势


1、节省自身服务器带宽、流量、储存空间,因为使用七牛云前端JS SDK上传到七牛云。
2、提高网站加载速度,因为大部分的流量由七牛云分发,减少了自身服务器带宽的占用,七牛云的CDN比普通的自建服务器还是要快的。
3、不破坏系统兼容性,可以后台配置储存位置,如果哪天想用回自己服务器储存图片,只需要修改一个网站后台选项即可。

DeDeCMS(织梦)整合七牛云储存思路


在编辑文章前,通过网站后台设置图片储存位置(七牛云或者自己服务器),然后获取对应的图片地址。如果你使用DeDeCMS默认编辑器CKeditor,可以参考。

对DeDeCMS(织梦)所做的修改


1、安装七牛云JS-SDK(用于上传)、php-SDK(用于生成uptoken)。
安装过程可以参考七牛云官方文档 地址:developer.qiniu.com/resource/official.html#sdk。我们这里采用比较简单的方法,直接拷贝文件至网站目录,下面贴一下相对的目录。


include/autoload.php  //七牛云php-SDK 7.0  直接下载过来的,下面的src也是。
include/js/plupload.full.min.js //七牛云js-SDK  要用到的plupload
include/js/qiniu.min.js  //七牛云js-SDK  
include/src/Qiniu

2、增加后台配置选项。
我们需要添加一些设置,以方便设置七牛云参数,以及后期一些可能的修改,比如要换回自己服务器储存图片呢。
然后我们在管理目录下的config.php中加入七牛云php-SDK的初始化参数,生成uptoken。 [font=Georgia, Times, 'Times New Roman']PHP//七牛云初始化require_once(DEDEINC.'/autoload.php');  //引入七牛云php-SDK 7$qiniu_access_key = empty($QINIU_ACCESS_KEY)?'your_qiniu_access_key':$QINIU_ACCESS_KEY; //优先使用管理后台设置的,这里指定一个默认的,放在这里,没有文件管理权限的管理员看不到。$qiniu_secret_key = empty($QINIU_SECRET_KEY)?'your_qiniu_secret_key':$QINIU_SECRET_KEY;//同上$qiniu_upload_domain = empty($QINIU_UPLOAD_DOMAIN)?'http:upload.qiniu.com':$QINIU_UPLOAD_DOMAIN;//七牛云上传域名,https需要设置对应的域名,只影响JS-SDK拖拽上传和剪切板上传。$qiniu_bucket_domain = empty($QINIU_BUCKET_DOMAIN)?'your_qiniu_bucket_domain':$QINIU_BUCKET_DOMAIN;//用来拼凑完整URL。$qiniu_bucket = empty($QINIU_BUCKET)?your_qiniu_bucket':$QINIU_BUCKET;//七牛云php-SDK 7初始化时,需要知道空间名。use Qiniu\Auth;$auth = new Auth($qiniu_access_key, $qiniu_secret_key);use Qiniu\Storage\BucketManager;$bucketMgr = new BucketManager($auth);//删除七牛云资源时需要用到。$qiniu_uptoken = $auth->uploadToken($qiniu_bucket);//需要在前端调用编辑器前输出。
后面JS-SDK初始化,以及编辑器的一些操作,可以参考。
3、修改DeDeCMS图片上传处理逻辑和过程。
因为DeDeCMS(织梦)默认是上传到本地服务器,所以我们需要对上传的逻辑和处理过程做一些修改,同时要保证DeDeCMS(织梦)原来的图片上传功能不受到影响。我们需要修改管理目录下的/inc/inc_archives_functions.php文件,需要处理下织梦的图片处理函数,位置比较多,下面贴下代码段。 [font=Georgia, Times, 'Times New Roman']PHP$qiniu_bucket_domain_str ='#^'.quotemeta($GLOBALS['qiniu_bucket_domain']).'#i'; [font=Georgia, Times, 'Times New Roman']PHPif(preg_match("#".$basehost."#i", $value) || !preg_match("#^http:\/\/#i", $value)|| ($cfg_basehost != $basehost && preg_match("#".$cfg_basehost."#i", $value))|| preg_match($GLOBALS['qiniu_bucket_domain_str'], $value)){continue;} [font=Georgia, Times, 'Times New Roman']PHP{$picname = preg_replace("/[\"|'| ]{1,}/", '', $img_array[0]);if(preg_match("#_lit\.#", $picname)) {$litpic = $picname;}else if(preg_match($GLOBALS['qiniu_bucket_domain_str'], $picname)){$litpic = $picname;}else $litpic = GetDDImage('ddfirst', $picname,1);} [font=Georgia, Times, 'Times New Roman']PHPif(preg_match($GLOBALS['qiniu_bucket_domain_str'], $picname)){$litpic = $picname;return $litpic;} [font=Georgia, Times, 'Times New Roman']PHP if($isremote==1 && preg_match("#^http:\/\/#i", $handurl) && !preg_match($GLOBALS['qiniu_bucket_domain_str'], $handurl)){$ddinfos = GetRemoteImage($handurl, $cuserLogin->getUserID());if(!is_array($ddinfos)){$litpic = "";}else{$filename = $ddinfos[0];}$isrm_up = TRUE;}

写在最后


上面就是DeDeCMS(织梦)整合七牛云储存的方案了,这个方案的优势在不需要消耗自己服务器的流量、带宽、磁盘空间,直接通过浏览器把图片上传到七牛云服务器。而且支持织梦采用最新的CKditor编辑器,可以拖拽上传和剪切板黏贴上传。并且在使用图片对话框上传的时候支持大于4M的文件上传、断点续传等。另外本人很抱歉,不提供免费的服务,请见谅。希望看了之后有所帮助。

展开
收起
yahoo8 2017-02-02 17:11:03 6416 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
阿里云储存产品全系解读 立即下载
创业公司的域名想象 立即下载
低代码开发师(初级)实战教程 立即下载