thinkphp结合七牛云存储

在工作中很常见的一个问题就是加载图片的问题,阿里云有对象存储,七牛有免费的10gb存储,用的人也比较多,今天就写写在thinkphp中结合七牛云存储进行图片的上传与下载。

首先第一步注册七牛账号,通过认证,创建空间,有私密的和公开的可以选择。

第二步 七牛云个人面板——密钥管理——获取AK和SK

先讲公开的,公开的比较简单,上传校验token 下载的时候不校验 谁都可以使用。私密的呢 上传和下载都需要校验token.

打开thinkphp的配置文件进行配置。

=> (
    => ,=> ,
    => (
        => ,
        => ,
        =>,
        => ,
    ),
 => ,

    => ,

    => (,),

    => (, , , ),

    => ,

    => (,),
    
)

然后 前台提交到控制器后,控制器直接调用配置项,直接可上传文件到七牛云,简单版控制器调用方法如下:

(){
   (IS_POST){
       $setting();
       $Upload \Think\Upload($setting);
       $info $Upload($_FILES);
       ($info);
   }{
       $this();
   }
}

执行以后如果发现返回false,并没有返回array;这时候我们就要检查一下这几个地方了

QiniuStorage.class.php中的这个HOST选项是否正确,可以打开自己所选空间的说明里面看,我的是华北的修改以后就正确了

public $QINIU_UP_HOST   =  'http://up-z1.qiniu.com';

下面把这个地址的域名列表 放在下面 以后可能会发生变化。具体看官方文档,在点击创建那个存储区域的下面 可以看到 一个超链接 点击那里可以看到这个设置

华南存储区域入口域名列表
    IO HTTP(下载、第三方资源拉取、镜像资源拉取):http://iovip-z2.qbox.me;
    IO HTTPS(下载、第三方资源拉取、镜像资源拉取):https://iovip-z2.qbox.me;
    UP HTTP(上传):http://up-z2.qiniu.com(源站入口)、http://upload-z2.qiniu.com(CDN 透传入口);
    UP HTTPS(上传):https://up-z2.qbox.me。

上传功能

华东存储区域入口域名列表

1
2
3
4
    IO HTTP(下载、第三方资源拉取、镜像资源拉取):http://iovip.qbox.me;
    IO HTTPS(下载、第三方资源拉取、镜像资源拉取):https://iovip.qbox.me;
    UP HTTP(上传):http://up.qiniu.com(源站入口)、http://upload.qiniu.com(CDN 透传入口);
    UP HTTPS(上传):https://up.qbox.me。


华北存储区域入口域名列表

IO HTTPS(下载、第三方资源拉取、镜像资源拉取):https://iovip-z1.qbox.me;IO HTTP(下载、第三方资源拉取、镜像资源拉取):http://iovip-z1.qbox.me;

UP HTTP(上传):http://up-z1.qiniu.com(源站入口)、http://upload-z1.qiniu.com(CDN 透传入口);
UP HTTPS(上传):https://up-z1.qbox.me。

这时候 应该好了,如果是放在公共空间的的话,打开返回的那个数组里面的url 直接可以访问了。

下面讲如果是私密空间的 访问方式

(){
    $url ;
    $setting();
    $token $this((,$url,$setting[][] , ));
        $token $setting[][]$token;
    $url $url$token;
    $url;
    
}

() {
    $data ();
    $data ((,,),(,,),$data);
    $data;
}

这样就可以了 会直接显示图片,没有显示的话 自己去排错,注意url要是你自己的。

而且七牛云还支持生成略缩图/加水印/裁剪等方式访问获取!


在七牛的空间控制面板——图片处理——图片样式那里可以自定义你想要的样式!


设置好后会生成一段处理接口:

如:imageView2/2/w/79/h/79/format/jpg/interlace/0/q/70


那么我们怎么访问处理后的图片?

七牛云空间测试域名 + / + 图片文件名 + ? +处理接口

如:http://XXXXXXXXX.bkt.clouddn.com/2016-07-18_578c75f175bcd.jpg?imageView2/2/w/79/h/79/format/jpg/interlace/0/q/70

这样就能获取处理过的图片!不同的情景使用不同大小的图片!超好用!

想知道更多的方法 就多去看手册,自己动手尝试~


nickname
content