背景知识:
- 七牛云就是我们常说的图床。什么是图床?可以简单理解为是一种存储图片资源的服务器。
- 本文基于Yii2简单介绍七牛云的使用
1.首先在七牛云平台创建账户:传送门
2.登陆账户之后,点击头部菜单管理控制台,进入之后,点击左侧菜单存储对象:
3.点击新建存储空间,填写响应的信息,如下仅做参考:
4.创建好应用之后,接着我们要生成密钥:点击右上角的个人面板,再点击密钥管理,进入页面之后,点击右下角的创建密钥即可:
5.最后我们还需要一个信息那就是资源的域名,可以在新建的存储空间中看到:
如上信息都配置成功之后,我们讲解代码的实现:首先第一步安装Yii2的七牛云扩展,具体的安装方式可以参考这篇博客传送门,安装成功之后,我们在配置文件params.php中增加如下配置:
'qn_ak'=>'你自己的Ak',
'qn_sk'=>'你自己的AS',
'qn_domain'=>'资源域名',
'qn_bucket'=>'存储空间名称',
以下是一个简单地demo:
use crazyfd\qiniu\Qiniu;
$qiniu=new Qiniu(
\Yii::$app->params['qn_ak'],
\Yii::$app->params['qn_sk'],
\Yii::$app->params['qn_domain'],
\Yii::$app->params['qn_bucket'],
'east_china'
);
//注意第五个参数,由于我们的存储空间创建的时候选择是华东的,因此传入的字符串的是'east_china',
//具体可选值是哪些,可以查看源代码Qiniu.php
/* $arr = [
//华东
'east_china' => [
'up' => array("up.qiniup.com", 'up-nb.qiniup.com', 'up-xs.qiniup.com'),
],
//华北
'north_china' => [
'up' => array('up-z1.qiniup.com'),
],
//华南机房
'south_china' => [
'up' => array('up-z2.qiniup.com', 'up-gz.qiniup.com', 'up-fs.qiniup.com'),
],
//北美机房
'north_america' => [
'up' => array('up-na0.qiniup.com'),
]
];
*/
//上传操作
//生成一个唯一标识,这个key用来标识你上传的资源
$key=md5(uniqid(mt_rand(),true));
try{
$qiniu->uploadFile($_FILES['Goods']['tmp_name']['picture'],$key);
$url='http://'.$qiniu->getLink().$key;
return $url; //之后可以通过这个$url访问到刚上传的资源
}catch(\Exception $e){
return false;
}
//删除操作
try{
//删除对应的资源
$qiniu->delete($key);
return true;
}catch(\Exception $e){
throw $e;
}
最后补充一点:有时候我们会有缩略图这种需求,例如缩略图要求尺寸是300*400,传统的做法就以原图为基础做裁剪,然后再生成一张图片,但是在七牛云中,我们可以使用如下的方案:
例如生成如下这样子的样式,并命名为small:
假设我们上传了一张图片并且访问路径是:http://p15o5mswx.bkt.clouddn.com/00113d3c6cb4cf3c84773711a8162b47,我们完全不需要再生成一张缩略图并上传至七牛云,而可以直接使用我们刚刚设置的样式在原来的图片上进行访问,例如:http://p15o5mswx.bkt.clouddn.com/00113d3c6cb4cf3c84773711a8162b47-small