引入七牛云扩展包
composer require qiniu/php-sdk
创建文件上传配置文件 config/upload.php
<?php
// 文件上传配置
return [
'qiniu' => [
// 存储空间名称
'bucket' => 'itqaq',
// 存储空间的对应域名
'domain' => '//qbx51pqrr.bkt.clouddn.com',
// 用于签名的公钥 AccessKey
'accessKey' => 'l_OnndRIVj17ZwIKMOZBLorh5dK4BKIxxxxxx',
// 用于签名的私钥 SecretKey
'secretKey' => '7fXF7wbOWcC5pUJKmGz3N8DU6ZB7u3exxxxxx',
],
];
七牛云文件上传封装
<?php
namespace app\admin\controller;use think\facade\Config;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;/**
- 七牛云封装类
/
class Qiniu
{
/*- 文件上传到七牛云
- @return 在七牛云上的文件名
*/
public static function upload(field = '', dirname = '')
{
// 存储空间名称
$bucket = Config::get('upload.qiniu.bucket');
// 存储空间对应的域名
$domain = Config::get('upload.qiniu.domain');
// 用于签名的公钥 AK
$accessKey = Config::get('upload.qiniu.accessKey');
// 用于签名的私钥 SK
$secretKey = Config::get('upload.qiniu.secretKey');
file = request()->file(field);if ($file) {
// 临时文件路径
tmpName = file->getRealPath();
// 初始化鉴权对象
auth = new Auth(accessKey, $secretKey);
// 生成上传Token
token = auth->uploadToken($bucket);
// 上传管理类 构建UplaodManager对象
$uploadMgr = new UploadManager();
// 原始文件后缀名
ext = file->getOriginalExtension();
// 目录名
if (dirname != '') dirname .= '/';// 随机文件名
path = dirname . md5(microtime(true) . mt_rand(1, 1e9)) . '.' . $ext;
info = uploadMgr->putFile(token, path, $tmpName);
// 上传到七牛云后的新名称
return domain . '/' . info[0]['key'];
} else {
return '没有文件上传';
}
}
}
使用示例
//qbx51pqrr.bkt.clouddn.com/article/content/1e0ba811a443c5a38e1e615f35526bc3.jpg
\app\admin\controller\Qiniu::upload('pic', 'article/content');