thinkPHP5框架实现七牛云文件上传和删除功能


发文时间:2022年05月30日 14:30:02     编辑:Aaron      标签:thinkPHP 七牛云 1219


站点的图片文件或js等静态资源放在cdn上是一种不错的选择,可以减轻服务器的带宽压力,同时也增加访问速度。

WechatIMG977.png

官方文档地址 https://developer.qiniu.com/kodo/1241/php

//ps:下载了Composer的可以直接通过命令下载
php composer.phar require qiniu/php-sdk

  我这边是直接通过下载PHP SDK然后在框架里引入使用image.png

我的项目七牛云空间地址放此路径

image.png

完整代码

<?php
// +----------------------------------------------------------------------
// | Controller function:七牛云文件上传类
// +----------------------------------------------------------------------
// | Modified By: Aaron
// +----------------------------------------------------------------------
// | last-modified time:2022年05月14日14:23:12
// +----------------------------------------------------------------------
 
namespace app\admin\controller;
use app\admin\controller\Bass;
//引入七牛云sdk
require   VENDOR_PATH.'php-qiniu-sdk/autoload.php';
// 引入鉴权类
use Qiniu\Auth;
// 引入上传类
use Qiniu\Storage\UploadManager;
 
class QiNiu extends Bass
{
    private $accessKey ="在七牛云后台获取";//填入对应的信息
    private $secretKey = "在七牛云后台获取";//填入对应的信息
    private $bucket = "aaroner";
    /*
     * 文件上传到七牛云
     * $file_Path 当前所需上传的文件路径
     * $file_name 当前文件的后缀  png  gif等
     * return []
     */
    public function QnUploadFile($file_Path,$file_type){
        // 构建鉴权对象
        $auth = new Auth($this->accessKey, $this->secretKey);
        // 生成上传 Token
        $token = $auth->uploadToken($this->bucket);
        // 要上传文件的本地路径
        $filePath = $file_Path;
 
        // 上传到七牛后保存的文件名(保存到指定目录下 AaronWebImg 好管理)
//        $key = 'AaronWebImg/图片名称.png';
        $key='AaronWebImg/'.date("Ymd-His").'-'.rand('100000','9999999').'.'.$file_type;
        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        // 调用 UploadManager 的 putFile 方法进行文件的上传。
        list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
        if ($err !== null) {
                return [
                    'state'=>'error',
                    'msg'=>'上传文件失败!'
                ];
            } else {
            /*
             * 成功案例
             array (size=2)
                  'hash' => string 'FjS-T00TKVWzXxzkI9HHIJidz7wO' (length=28)
                  'key' => string 'AaronWebImg/my-php-logo66666.png' (length=32)
             */
            return [
                'state'=>'success',
                'msg'=>'上传文件成功!',
                'hash'=>$ret['hash'],
                'key'=>$ret['key'],//七牛云文件目录
            ];
        }
    }
 
    /*
     * 删除七牛云文件信息
     * $file_name 当前需删除的文件名
     * return []
     */
    public function delUploadFile($file_name){
        // 构建鉴权对象
        $auth = new Auth($this->accessKey, $this->secretKey);
        $config = new \Qiniu\Config();
        $bucketManager = new \Qiniu\Storage\BucketManager($auth, $config);
        $err = $bucketManager->delete($this->bucket, $file_name);
        if ($err) {
            /*
             * 成功案例
                dump($err);
                array (size=2)
                  0 => null
                  1 => null
             */
            if(empty($err[1])){
                return [
                    'state'=>'success',
                    'msg'=>'删除文件成功!'
                ];
            }
            return [
                'state'=>'error',
                'msg'=>"删除文件失败! "
            ];
        }
        return [
            'state'=>'error',
            'msg'=>'获取七牛云删除状态失败,请稍后再试!'
        ];
    }
 
}


 

若无特殊说明,此文章为博主原创。
写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/62.html




SITE MAP

  FOLLOW US