用过七牛的童鞋,不知道有没有注意到七牛文档中的这样一段:
![技苑 技苑](https://i-blog.csdnimg.cn/blog_migrate/24b63afd1c20be045173ed0c9bcca3c2.png)
是的!你没看错,它不支持一次上传多个文件!!那么,在我们用到ueditor的时候怎么办呢?ueditor可是有多图上传的吖,后来我就去Google,去百度,总算是找到了一个demo,只是这个demo只支持公有空间,不支持私有空间,于是为了保护哥的个人隐私,就研究出了怎么上传到私有空间的方法,下面请看代码。
ueditor下php目录的config.phg文件内容:
/**
* 配置文件
*
* @author widuu <admin@widuu.com>
* @editor pengxb (注:尊重原创,我只是代码保养工~)
* @document https://github.com/widuu/qiniu_ueditor_1.4.3
*/
return array(
'upload_type' => 'qiniu', // [qiniu|local] 设置上传方式 qiniu 上传到七牛云存储 ,local 上传到本地
/* 本地上传配置信息 */
'orderby' => 'asc', // [desc|asc] 列出文件排序方式,仅仅在本地上传时候有效
'root_path' => $_SERVER['DOCUMENT_ROOT'], //本地上传 本地的绝对路径
/* 七牛云存储信息配置 */
'bucket' => 'pengxb', // 七牛Bucket的名称
'host' => 'http://image.pengxb.com',//七牛绑定的域名
'access_key' => 'AK', // 七牛的access_key
'secret_key' => 'SK', //七牛的secret_key
/* 上传配置 */
'timeout' => '3600', // 上传时间
'save_type' => 'date', // 保存类型
/* 水印设置 */
'use_water' => false, // 是否开启水印
/* 七牛水印图片地址 */
'water_url' => 'http://gitwiduu.u.qiniudn.com/ueditor-bg.png',
/* 水印显示设置 */
'dissolve' => 50, // 水印透明度
'gravity' => 'SouthEast', // 水印位置具体见文档图片说明和选项
'dx' => 10, //边距横向位置
'dy' => 10 //边距纵向位置
);
还有config.json的配置,这个基本不用动,除非你有图片大小尺寸的限制,这个你可以根据个人需要改;
然后就涉及到公有空间和私有空间的问题了,公有空间可以直接url访问,而私有空间则需要带参数才能访问,
如果是公有空间,那下面的就不用看了;
如果是私有空间,那就要作如下更改:
文件是php/vendor/driver目录下的QiniuDriver.class.php,需要更改其中的response方法,代码如下:
/**
* 获取响应数据
* @param string $text 响应头字符串
* @return array 响应数据列表
*/
private function response($text){
$headers = explode(PHP_EOL, $text);
$items = array();
foreach($headers as $header) {
$header = trim($header);
if(strpos($header, '{') !== False){
$items = json_decode($header, 1);
break;
}
}
$items['url'] = $this->privateDownloadUrl($items['url']);//私有空间专属,公有空间可注释
return $items;
}
/*私有空间专属,公有空间可注释*/
private function privateDownloadUrl($baseUrl, $expires = 3600)
{
$deadline = time() + $expires;
$pos = strpos($baseUrl, '?');
if ($pos !== false) {
$baseUrl .= '&e=';
} else {
$baseUrl .= '?e=';
}
$baseUrl .= $deadline;
$token = $this->getSign($baseUrl);
return "$baseUrl&token=$token";
}
OK,代码贡献完毕,上面说展示出来的就是我所做的更改,在Thinkphp框架上是测试成功的,后面就是我更改之后的源码了,放在了GitHub上:Ueditor七牛云存储版本
注:上传到私有空间,经本人测试,目前只对上传单图有效,至于上传其它文件,本人正在研究中,请保持关注~
没有难的技术,当你弄清它的原理时,你会发现原来如此简单~ 欢迎加群【536501561】讨论