class QiniuUp extends ModelBasic
{
private $AccessKey;
private $SecretKey;
private $bucket;
private $auth;
function __construct()
{
parent::__construct();
$this->AccessKey = config('qiniu.AccessKey');
$this->SecretKey = config('qiniu.SecretKey');
$this->bucket = config('qiniu.bucket');
vendor('qiniu.php-sdk.autoload');
$this->auth = new Auth($this->AccessKey, $this->SecretKey);
}
/**
* Author: MrLi (602952118@qq.com)
* Desc: 七牛云上传
* Param:
* Return:
* Data: 2019/11/20 9:42
*/
public function upload($fileName = '', $bucket = '')
{
//文件获取、处理
$file = request()->file($fileName);
$info = $file->getInfo();
$s_name = $info["name"];
// 上传文件的本地路径
$filePath = $file->getRealPath();
//文件后缀
$extension = pathinfo($s_name, PATHINFO_EXTENSION);
//获取七牛token
$bucket = empty($bucket) ? $this->bucket : $bucket;
$token = $this->auth->uploadToken($bucket);
//上传到七牛后保存的文件名
$folder = date('Ymd')."/";
$name = time() . rand(0, 9999) . '.' . $extension;
$key = config('qiniu.folder').$folder.$name;
//初始化UploadManager对象
$uploadManager = new UploadManager();
//文件上传
list($result, $error) = $uploadManager->putFile($token, $key, $filePath);
if ($error !== null) {
return ['errNo' => 1, 'errMsg' => $error, 'data' => $this->SecretKey];
} else {
return ['errNo' => 0, 'data' => ['s_name' => $s_name,'up_name' => $key,"size"=>$info["size"], 'url' => config('qiniu.head').config('qiniu.domain').$key]];
}
}
/**
* 获取私有空间或使用了原图保护功能的图片文件地址
* @param string $url 格式:http://domain/key[文件名]?e=时间戳
* @return string 可访问的url地址:http://domain/key[文件名]?e=时间戳&token='token'
*/
public function getSignedUrl($url)
{
$signedUrl = $this->auth->privateDownloadUrl($url);
//该url地址需要验证是否可访问。
return $signedUrl;
}
/**
* Author: MrLi (602952118@qq.com)
* Desc: 删除七牛云存储的数据
* Param:
* Return:
* Data: 2020/3/18 13:53
*/
function delete($filename){
$bm = new BucketManager($this->auth,new Config());
$err = $bm->delete($this->bucket,$filename);
return $err;
}
/**
* Author: MrLi (602952118@qq.com)
* Desc: 刷新文件缓存
* Param:
* Return:
* Data: 2020/3/18 13:53
*/
function refreshBuffer($urls){
$cdn = new CdnManager($this->auth);
$re = $cdn->refreshUrls($urls);
return $re;
}
}
注意:前提是引入七牛云的基础包 composer require qiniu/php-sdk
配置文件:
//七牛云空间配置
'qiniu' => [
'AccessKey' => '你的KEY',
'SecretKey' => '你的Secret',
'bucket' => '你的bucket',
'domain' => '你的网址/',
'head' => 'http://',
'folder' => 'videos/'
]