首页 > 代码库 > dedecms织梦七牛云存储二次开发
dedecms织梦七牛云存储二次开发
DeDeCMS(织梦)整合七牛云储存的优势1、节省自身服务器带宽、流量、储存空间,因为使用七牛云前端JS SDK上传到七牛云。
2、提高网站加载速度,因为大部分的流量由七牛云分发,减少了自身服务器带宽的占用,七牛云的CDN比普通的自建服务器还是要快的。
3、不破坏系统兼容性,可以后台配置储存位置,如果哪天想用回自己服务器储存图片,只需要修改一个网站后台选项即可。
DeDeCMS(织梦)整合七牛云储存思路在编辑文章前,通过网站后台设置图片储存位置(七牛云或者自己服务器),然后获取对应的图片地址。
对DeDeCMS(织梦)所做的修改1、安装七牛云JS-SDK(用于上传)、php-SDK(用于生成uptoken)。
安装过程可以参考七牛云官方文档 地址:http://developer.qiniu.com/resource/official.html#sdk。我们这里采用比较简单的方法,直接拷贝文件至网站目录,下面贴一下相对的目录。
1234include
/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。
01
02
03
04
05
06
07
08
09
10
11
12
13
|
//七牛云初始化 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 ); //需要在前端调用编辑器前输出。 |
3、修改DeDeCMS图片上传处理逻辑和过程。
因为DeDeCMS(织梦)默认是上传到本地服务器,所以我们需要对上传的逻辑和处理过程做一些修改,同时要保证DeDeCMS(织梦)原来的图片上传功能不受到影响。我们需要修改管理目录下的/inc/inc_archives_functions.php文件,需要处理下织梦的图片处理函数,位置比较多,下面贴下代码段。
1
|
$qiniu_bucket_domain_str = ‘#^‘ .quotemeta( $GLOBALS [ ‘qiniu_bucket_domain‘ ]). ‘#i‘ ; |
1
2
3
4
5
6
|
if (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 ; } |
1
2
3
4
5
6
|
{ $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); } |
1
2
3
4
|
if (preg_match( $GLOBALS [ ‘qiniu_bucket_domain_str‘ ], $picname )){ $litpic = $picname ; return $litpic ; } |
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
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的文件上传、断点续传等。另外本人很抱歉,不提供免费的服务,请见谅。希望看了之后有所帮助。
dedecms织梦七牛云存储二次开发