织梦(DeDeCMS)整合七牛云,织梦整合阿里云OSS

来源:原创城子居 / 2016-07-20 13:20
织梦集成上传至七牛云、阿里云OSS,集成功能包括:图集文件上传、文章图片上传。简单配置一键上传至七牛云或者阿里云OSS,节省服务器带宽,提升加载速度。...

七牛云提供免费的http月流量10G(这里注册享优惠),对于普通的博客来说完全够用,所以本文就介绍下DeDeCMS(织梦)怎么最大化的利用七牛云来节省服务器带宽、流量、储存空间,并且提高网站的加载速度。默认的DeDeCMS是不支持七牛云的。织梦集成上传至七牛云、阿里云OSS,集成功能包括:图集文件上传、文章图片上传。简单配置一键上传至七牛云或者阿里云OSS。由于时间关系,下文只是文章图片上传至七牛云的教程,不包含图集上传的功能。图集上传的功能也已经整理好,只是确实是没时间写教程了。

DeDeCMS(织梦)整合七牛云、织梦整合阿里云OSS的优势

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

DeDeCMS(织梦)整合七牛云储存/阿里云OSS思路

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

对DeDeCMS(织梦)所做的修改

1、安装php-SDK(用于生成uptoken)。
安装过程可以参考七牛云官方文档 地址:http://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/src/Qiniu

2、增加后台配置选项。
我们需要添加一些设置,以方便设置七牛云参数,以及后期一些可能的修改,比如要换回自己服务器储存图片呢。

后台添加参数管理

然后我们在管理目录下的config.php中加入七牛云php-SDK的初始化参数,生成uptoken。

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);//需要在前端调用编辑器前输出。

后面环境初始化,以及编辑器的一些操作,可以参考《阿里云OSS、七牛云CKeditor上传插件》。
3、修改DeDeCMS图片上传处理逻辑和过程。
因为DeDeCMS(织梦)默认是上传到本地服务器,所以我们需要对上传的逻辑和处理过程做一些修改,同时要保证DeDeCMS(织梦)原来的图片上传功能不受到影响。我们需要修改管理目录下的/inc/inc_archives_functions.php文件,需要处理下织梦的图片处理函数,位置比较多,下面贴下代码段。

PHP$qiniu_bucket_domain_str ='#^'.quotemeta($GLOBALS['qiniu_bucket_domain']).'#i';
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;
}
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);
}
PHPif(preg_match($GLOBALS['qiniu_bucket_domain_str'], $picname)){
	$litpic = $picname;
	return $litpic;
}
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;

}

写在最后

上面就是织梦文章图片七牛云储存的上传方案了,这个方案的优势在不需要消耗自己服务器的流量、带宽、磁盘空间,直接通过浏览器把图片上传到七牛云服务器。而且支持织梦采用最新的CKditor编辑器,可以拖拽上传和剪切板黏贴上传、word黏贴上传(仅IE9+)。并且在使用图片对话框上传的时候支持大于4M的文件断点续传等。织梦集成上传至七牛云、阿里云OSS,集成功能包括:图集文件上传、文章图片上传。简单配置一键上传至七牛云或者阿里云OSS。

另外本人很抱歉,不提供免费的服务,请见谅。

16
0

本站原创内容请勿转载,因为这样大家可以聚集在这里讨论,请将本文链接分享给他/她!

文章讨论

延伸阅读