用过七牛的童鞋,不知道有没有注意到七牛文档中的这样一段:
是的!你没看错,它不支持一次上传多个文件!!那么,在我们用到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】讨论