ueditor上传文件到七牛云私有空间

        用过七牛的童鞋,不知道有没有注意到七牛文档中的这样一段:

技苑

是的!你没看错,它不支持一次上传多个文件!!那么,在我们用到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七牛云存储版本


注:上传到私有空间,经本人测试,目前只对上传单图有效,至于上传其它文件,本人正在研究中,请保持关注~


技苑
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • © 2016-2024 技苑 | PHP是最好的语言 版权所有 ICP证:鄂ICP备15021999号-4
  • 联系邮箱:master@pengxb.com