ThinkPHP5.0上传图片到阿里云OSS

1.首先登录阿里云OSS管理控制台新建一个Bucket存储桶:

(注意下面的EndPoint,即外网访问节点,后面的配置项有用到) 

为了区分不同类型的图片,可以在存储桶下面新建目录进行存放:

2.在tp5的config中做如下一些配置:

//阿里云OSS配置
'alioss'        =>[
    'KeyId'      => 'LTAIRb27m9hb3cIm',  //AccessKey ID
    'KeySecret'  => 'nV2XfBuTEFUUYfT2gHnFMUAgwwCinQ ',  //Access Key Secret
    'EndPoint'   => 'oss-cn-beijing.aliyuncs.com',  //外网访问节点
    'Bucket'     => 'test-lws',  //Bucket名称
],

其中AccessKey ID和Access Key Secret在这个地方可以找到:(注意保密)

3.到阿里云对象存储OSS官网文档,下载PHP的demo,下载后解压重命名文件夹为aliyun-oss,我放到了tp5的extend目录下面:

4. 然后在application/common下面新建一个阿里云OSS上传的工具类:

AliOss.php:(注意引入tp5的Image图像处理类库)

<?php
namespace app\common;
use think\Controller;
use think\Image;

require_once APP_PATH . '/../extend/aliyun-oss/autoload.php';
use OSS\Core\OssException;
use OSS\OssClient;
class AliOss
{
    public static function uploadFile($mulu,$file) {
        $resResult = Image::open($file);
        try {
            $KeyId = config('alioss.KeyId');
            $KeySecret = config('alioss.KeySecret');
            $EndPoint = config('alioss.EndPoint');
            $Bucket = config('alioss.Bucket');
            //实例化
            $ossClient = new OssClient($KeyId, $KeySecret, $EndPoint);
            //sha1加密 生成文件名 连接后缀
            $fileName = $mulu.'/'.sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
            //执行阿里云上传
            $result = $ossClient->uploadFile($Bucket, $fileName, $file->getInfo()['tmp_name']);
            //图片地址:$result['info']['url']
            $arr = ['code'=>200,'msg'=>'上传成功','data'=>$fileName];
        } catch (OssException $e) {
            $arr = ['code'=>0,'msg'=>$e->getMessage(),'data'=>''];
        }
        return $arr;
    }
}

5.上传图片时调用OSS工具类:

<?php
namespace app\index\controller;
use think\Controller;
use app\common\AliOss;
class Test extends Controller
{
    public function uploadtest(){
      	$file = request()->file('headimg');
       	if($file){
            $res = AliOss::uploadFile('headimg',$file);
            if($res['code']==200){
                //图片路径
                $headimg = $res['data'];
                //业务逻辑省略......
            }
        }
        return json($res);
    }
}
发布了103 篇原创文章 · 获赞 167 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/msllws/article/details/86760890