thinkphp 增加七牛上传功能

PHP技术
375
0
0
2022-09-21

首先需要下载七牛的php版本sdk:软件开发工具包 - 七牛开发者中心

将文件重新命名:Qiniu,然后移动到extend目录下,然后就可以直接使用。

<?
/**
 * 七牛文件上传处理
 */
require_once '../extend/Qiniu/autoload.php';  //引入七牛文件
use think\Db;
use Qiniu\Auth;// 引入七牛鉴权类
use Qiniu\Storage\UploadManager;// 引入七牛上传类
use Qiniu\Processing\PersistentFop;//缩略图持久化
class QiniuUpload extends Common{
    /**
     * [upload_files 七牛文件上传处理]
     * @param  [type] $files [上传的文件]
     * @return [type]        [description]
     */ 
    public function upload_files($files){
        //1.验证文件--省略  
        //获取七牛配置参数  
        $file_path = $files->getRealPath();// 获取文件对象的本地路径  
        if(empty($file_path)){
            return ['code'=>-200,'msg'=>'请传入文件本地路径'];
        }
        $system_cofing = system_cofing();            //获取系统配置--气的七牛配置缓存在了系统参数中  
        // 需要填写你的 Access Key 和 Secret Key  
        $accessKey = $system_cofing['qiniu_accessKey'];//"8G-G8oyFme8ltP5p_zc6XaOrzcMST9hc5YCINlsR";   登录七牛可以查看  
        $secretKey = $system_cofing['qiniu_secretKey'];//"Iz5YDPIgNWVQxO6GMAF7jWUeUf5UXyUh6HlTb7oa";   登录七牛可以查看  
        $bucket = $system_cofing['qiniu_bucket'];      //"img";   登录七牛可以查看--储存空间命名  
        $folder = $system_cofing['qiniu_folder'];      //qiniu目录标识  
        $domain = $system_cofing['qiniu_url'];         //qiniu访问域名  
        // 构建鉴权对象  
        $auth = new Auth($accessKey, $secretKey);
        // 生成上传 Token  
        $token = $auth->uploadToken($bucket);
        // 获取文件后缀  
        $ext = strtolower(pathinfo($files->getInfo('name'), PATHINFO_EXTENSION));  //后缀  
        // 上传到七牛后保存的文件名  
        $key = $folder.'/'.date('Ymd').'/'.md5(microtime(true)).'.'.$ext;
        // 初始化 UploadManager 对象并进行文件的上传。  
        $uploadMgr = new UploadManager(); 
        // 调用 UploadManager 的 putFile 方法进行文件的上传。  
        list($ret, $err) = $uploadMgr->putFile($token, $key, $file_path);
        if ($err !== null) {
            return ['code'=>-200,'msg'=>$err->message(),'statusCode'=>$err->code];
        } else {
            return [
                'code'=>200,
                'msg'=>'上传成功',
                'value'=>$key,            //返回保存图片的路径  
                'url'=>$domain.'/'.$key,  //返回保存图片的全路径
            ];
        }
    }
}

以上是直接简单使用的代码