ThinkPHP6.0七牛云文件上传封装

ThinkPHP6.0七牛云文件上传封装

引入七牛云扩展包

代码语言:javascript
复制
composer require qiniu/php-sdk

创建文件上传配置文件 config/upload.php

代码语言:javascript
复制
<?php

// 文件上传配置

return [
'qiniu' => [
// 存储空间名称
'bucket' => 'itqaq',
// 存储空间的对应域名
'domain' => '//qbx51pqrr.bkt.clouddn.com',
// 用于签名的公钥 AccessKey
'accessKey' => 'l_OnndRIVj17ZwIKMOZBLorh5dK4BKIxxxxxx',
// 用于签名的私钥 SecretKey
'secretKey' => '7fXF7wbOWcC5pUJKmGz3N8DU6ZB7u3exxxxxx',
],
];

七牛云文件上传封装

代码语言:javascript
复制
<?php
namespace app\admin\controller;

use think\facade\Config;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

/**

  • 七牛云封装类
    /
    class Qiniu
    {
    /
    *
  • 文件上传到七牛云
  • @return 在七牛云上的文件名
    */
    public static function upload(field = &#39;&#39;, 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()-&gt;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 != &#39;&#39;) dirname .= '/';

// 随机文件名
path = dirname . md5(microtime(true) . mt_rand(1, 1e9)) . '.' . $ext;
info = uploadMgr->putFile(token, path, $tmpName);

// 上传到七牛云后的新名称
return domain . &#39;/&#39; . info[0]['key'];
} else {
return '没有文件上传';
}
}
}

使用示例

代码语言:javascript
复制
//qbx51pqrr.bkt.clouddn.com/article/content/1e0ba811a443c5a38e1e615f35526bc3.jpg

\app\admin\controller\Qiniu::upload('pic', 'article/content');