首页 > 代码库 > 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。我们这里采用比较简单的方法,直接拷贝文件至网站目录,下面贴一下相对的目录。

 
1
2
3
4
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。

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文件,需要处理下织梦的图片处理函数,位置比较多,下面贴下代码段。

[PHP] 纯文本查看 复制代码
?
1
$qiniu_bucket_domain_str =‘#^‘.quotemeta($GLOBALS[‘qiniu_bucket_domain‘]).‘#i‘;

 

[PHP] 纯文本查看 复制代码
?
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织梦七牛云存储二次开发