yii2.0 集合七牛SDK 上传图片到第三方


首先,请用composer下载七牛phpSDK (具体参考官方文档)

composer require qiniu/php-sdk

注册七牛账号 获取 AK SK(密匙) ,创建资源对象 获取domain(访问域名) bucket(你创建的资源对象名称)

models层定义AK SK domain bucket等常量 方便日后使用(因人而异)

const AK = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const SK = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const DOMAIN = 'xxxxxxx.com';
const BUCKET = 'xxxxxxxxxxx';

controller中加载七牛类

use crazyfdqiniuQiniu;

实例化七牛对象执行上传

//实例化七牛对象
$qiniu = new Qiniu(Product::AK,Product::SK,Product::DOMAIN,Product::BUCKET);

//生成key(图片标志)     
$key = uniqid();

//执行上传 
$qiniu->uploadFile($_FILES['Product']['tmp_name']['cover'],$key);

//获取存储地址
$cover = $qiniu->getLink($key);

------后面就是把路径存到数据库即可

多图片上传同理foreach即可

foreach($_FILES['Product 大专栏  yii2.0 集合七牛SDK 上传图片到第三方']['tmp_name']['pics'] as $k  => $file){
        if($_FILES['Product']['error']['pics'][$k]>0){
                continue;
        }
        $key = uniqid();
        $qiniu->uploadFile($file,$key);
        //(保存key为下标 方便后面删除)
        $pics[$key] = $qiniu->getLink($key);
}

多图片集合返回json格式

值得一提的是七牛可以设置多图片样式,比如我就将图片设置成3种,product_small,product_big,product_mid;

view视图输出

----
七牛存储的图片删除


$productid = yii::$app->request->get('productid');
        $product_del = Product::find()->where('productid=:pid',[':pid'=>$productid])->one();
        //获取链接中文件名
        $key = basename($product_del->cover);
        //七牛
        $qiniu = new Qiniu(Product::AK,Product::SK,Product::DOMAIN,Product::BUCKET);            

        $qiniu->delete($key);
        //删除多图片(因为保存时将文件名保存为下标值可直接删除)
        $pics = json_decode($product_del->pics,true);
        foreach ($pics as $key => $value) {
        $qiniu->delete($key);
        }     

猜你喜欢

转载自www.cnblogs.com/lijianming180/p/12037770.html
今日推荐