building-sign/app/service/Qiniu.php

79 lines
2.0 KiB
PHP
Raw Permalink Normal View History

2023-01-09 08:41:41 +00:00
<?php
namespace app\service;
use think\facade\Config;
use think\facade\Log;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
class Qiniu
{
private static $oss = null;
private function __construct()
{
}
private function __clone()
{
}
/**
* 七牛云OSS
*
*/
public static function config()
{
Config::load('extra/qiniu', 'qiniu');
return config('qiniu');
}
// 七牛云OSS实例 单例模式
public static function instance(): ?OssClient
{
if (self::$oss == null) {
try {
$conf = self::config();
self::$oss = new OssClient($conf['accessKeyId'], $conf['accessKeySecret'], $conf['endpoint']);
} catch (OssException $e) {
Log::error('实例化阿里云OSS失败: ' . $e->getMessage());
return null;
}
}
return self::$oss;
}
public static function aa()
{
$conf = self::config();
// 控制台获取密钥https://portal.qiniu.com/user/key
$accessKey = $conf['qiniuAccessKey'];
$secretKey = getenv('qiniuSecretKey');
$bucket = getenv('bucket');
// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
// 生成上传 Token
$token = $auth->uploadToken($bucket);
// 要上传文件的本地路径
$filePath = './php-logo.png';
// 上传到七牛存储后保存的文件名
$key = 'my-php-logo.png';
// 初始化 UploadManager 对象并进行文件的上传。
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传,该方法会判断文件大小,进而决定使用表单上传还是分片上传,无需手动配置。
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
var_dump($err);
} else {
var_dump($ret);
}
}
}