七牛云好处:云存储,云加速,CDN镜像存储等等,自直观的说,就是把一些静态文件如:css、js、图片等存储到七牛云,然后通过一个分配的或者自己绑定的域名开启CDN加速去访问,这样既减少了自己的服务器压力,又也减少了宽带,非常适合个人,或者一些中小型企业网站使用。
1、注册七牛云
2、到 对象存储 新建一个存储空间,并记下 名称
3、到 个人中心->密钥管理获取密钥:AK/SK
4、下载七牛云的SDK
点此: 官方下载
或者直接使用Composer下载(推荐):
php composer.phar require qiniu/php-sdk
下载完成后将SDK包放到/vendor中并重命名为qiniu。
5、在application/extra中新建配置文件qiniui.php:
return [
'ak' => '获取的ak',
'sk' => '获取的sk',
'bucket' => '创建的存储空间名称',
'image_url' => '分配给你的域名',
];
6、创建目录 /application/common/lib,用于存放后续的功能性文件。在此目录下创建Upload.php:
<?php
/**
* User: Xunm
* Date: 2018/10/6
*/
namespace app\common\lib\upqiniu;
// 引入七牛鉴权类
use Qiniu\Auth;
// 引入七牛上传类
use Qiniu\Storage\UploadManager;
class Upload
{
/**
* 上传图片
* @return null|string
*/
public static function image()
{
if(empty($_FILES['file']['tmp_name'])){
explode('图片不合法',404);
}
// 要上传文件的临时文件
$file = $_FILES['file']['tmp_name'];
$pathinfo = pathinfo($_FILES['file']['name']);
// 通过pathinfo函数获取图片后缀名
$ext = $pathinfo['extension'];
$conf = config('qiniu');
// 构建鉴权对象
$auth = new Auth($conf['ak'],$conf['sk']);
// 生成上传需要的token
$token = $auth->uploadToken($conf['bucket']);
// 上传到七牛后保存的文件名
$filename = date('Y').'/'.date('m').'/'.substr(md5($file),8,5).date('Ymd').rand(0,9999).'.'.$ext;
// 初始化UploadManager类
$uploadMgr = new UploadManager();
list($res,$err) = $uploadMgr->putFile($token,$filename,$file);
if($err !== null){
return null;
}else{
return $filename;
}
}
/**
* 删除图片
* @param $delFileName 要删除的图片文件,与七牛云空间存在的文件名称相同
* @return bool
*/
public static function delimage($delFileName)
{
// 判断是否是图片 目前测试,简单判断
$isImage = preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $delFileName);
if(!$isImage){
return false;
}
$conf = config('qiniu');
// 构建鉴权对象
$auth = new Auth($conf['ak'],$conf['sk']);
// 配置
$config = new \Qiniu\Config();
// 管理资源
$bucketManager = new \Qiniu\Storage\BucketManager($auth, $config);
// 删除文件操作
$res = $bucketManager->delete($conf['bucket'], $delFileName);
if (is_null($res)) {
// 为null成功
return true;
}
return false;
}
}
delimage()函数根据使用情况自行更改。
完!