首先,请用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);
}