TP框架上传图片至阿里云oss

首先安装阿里云oss扩展:

composer require aliyuncs/oss-sdk-php

如果这个安装不上可以直接下载SDK的包:

链接:https://pan.baidu.com/s/1QD0O2e55CHylGQjoWHXEJQ 
提取码:q4m6

下载解压后重命名为aliyun-oss放到extend目录下然后

在你的config文件中加入以下配置:

return [
    'KeyId'      => '',  //Access Key ID
    'KeySecret'  => '',  //Access Key Secret
    'Endpoint'   => '',  //阿里云oss 外网地址endpoint
    'Bucket'     => '',  //Bucket名称
];

接下来就是上传的方法了:记得在控制器中引用哦:

use OSS\OssClient;
use OSS\Core\OssException;

上代码:

public function uploadFile()
    {
        $file= request()->file('icon');
        $resResult = Image::open($file);
        $type = $resResult->type();
        // 尝试执行
        try {
            $accessKeyId = config('aliyun_oss.accessKeyId');//去阿里云后台获取秘钥
            $accessKeySecret = config('aliyun_oss.accessKeySecret');//去阿里云后台获取秘钥
            $endpoint = config('aliyun_oss.endpoint');//你的阿里云OSS地址
            $bucket = config('aliyun_oss.bucket');//你的阿里云OSS地址
            //实例化对象 将配置传入
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
            //这里是有sha1加密 生成文件名 之后连接上后缀
            $fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $type;
           //上传至阿里云的目录 为年+月/日的格式
            $pathName = date('Y-m/d') . '/' .$fileName;
            //执行阿里云上传 bucket名称,上传的目录,文件
            $result = $ossClient->uploadFile($bucket, $pathName, $file->getInfo()['tmp_name']); 
        } catch (OssException $e) {
            return $e->getMessage();
        }
        //将结果输出
        return $result['info']['url'];
    }           

 

posted @ 2020-02-28 16:52  你的男孩  阅读(837)  评论(0编辑  收藏  举报