ThinkPHP5上传图片至七牛云

作者: 温新

分类: 【ThinkPHP】

阅读: 2801

时间: 2020-04-05 13:39:27

将图片上传到七牛云,那么在七牛所创建的存储空间必须是公开的(即 可对外访问)。

第一步:七牛云官网下载官方PHP SDK

网址:https://developer.qiniu.com/kodo/sdk/1241/php#9

使用composer安装qiniu/php-sdk

#安装sdk。安装即可使用
composer require qiniu/php-sdk

第二步:创建配置文件

// app/extra/qiniu.php

return [
    'ak'    =>  '********************',     // id
    'sk'    =>  '********************',     // 秘钥
    'bucket'=>  '******',                   // 要上传的空间
    'image_url' =>  '*************',        // 空间域名
];

第三步:创建上传到七牛的图片上传类

// app/common/Upload.php


<?php
namespace app\common;

use Qiniu\Auth;     // 鉴权类
use Qiniu\Storage\UploadManager;    // 上传类

/**
 * Class Upload 图片上传到七牛云
 */
class Upload
{
    public static function qiNiuUpload()
    {

        // 获取上传的图片
        $file = request()->file('file');
        // 图片存储在本地的临时路经
        $filePath = $file->getRealPath();

        // 获取图片后缀
        $ext = pathinfo($file->getInfo('name'),PATHINFO_EXTENSION);
        // 上传到七牛后保存的新图片名
        $newImageName = date('Y').'/'.date('m').'/'.substr(md5($file->getInfo('name')),0,6).date('YmdHis').rand(000000,999999).'.'.$ext;

        // 构建鉴权对象
        $auth = new Auth(config('qiniu.ak') , config('qiniu.sk'));
        // 要上传的空间
        $token = $auth->uploadToken(config('qiniu.bucket'));

        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        list($ret , $err) = $uploadMgr->putFile($token , $newImageName , $filePath);

        if($err !== null){
            return null;
        }else{
            // 图片上传成功
            return $newImageName;
        }
    }
}

第四步:后台控制器使用

// app/admin/controller/Image.php


<?php
namespace app\admin\controller;

use think\Request;
use app\common\Upload as qiUpload;

/**
 * Class Image 后台图片上传
 * @package app\admin\controller
 */
class Image extends Base
{
    /**
     * 图片上传至七牛云
     */
    public function qiUpload()
    {
        $img = qiUpload::qiNiuUpload();

        if($img){
            $data = [
                'status'    =>  1,
                'message'   =>  'OK',
                'img_url'   =>  config('qiniu.image_url') . '/' . $img,
            ];

            return json($data);
        }else{
            return json(['status'=>0,'message'=>'上传失败']);
        }
    }


    /**
     * 图片上传至本地
     */
    public function upload()
    {
        $file = Request::instance()->file('file');
        $info = $file->move('uploads');
        // 上传成功
        if($info && $info->getPathname()){
            $data = [
                'status'    =>  1,
                'message'   =>  'OK',
                'img'       => '/'. $info->getPathname(),
            ];
            return json($data);
        }

        // 上传失败
        return json(['status'=>0,'message'=>'上传失败']);
    }

}

我是夕阳何处寻,期待和优秀的你一起同行!

夕阳何处寻

2020年04月05日

请登录后再评论