79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?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);
 | 
						||
        }
 | 
						||
    }
 | 
						||
} |