tp5 图片上传阿里云OSS

一、composer安装阿里云扩展

composer require aliyuncs/oss-sdk-php

二、封装使用阿里云的类

<?php
/**
 *
 * User: gzs
 * Date: 2021/6/10
 */

namespace tools\oss;


use OSS\OssClient;

class OSS
{
    public static function aliyun($savePath,$category='',$isunlink=false,$bucket=""){
        $accessKeyId = config('aliyun_oss.accessKeyId');//去阿里云后台获取秘钥
        $accessKeySecret = config('aliyun_oss.accessKeySecret');//去阿里云后台获取秘钥
        $endpoint = config('aliyun_oss.endpoint');//你的阿里云OSS地址
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
        //        判断bucketname是否存在,不存在就去创建
        if( !$ossClient->doesBucketExist($bucket)){
            $ossClient->createBucket($bucket);
        }
        $category=empty($category)?$bucket:$category;

        $savePath = str_replace("\\","/",$savePath);

        $object = $category.'/'.$savePath;//想要保存文件的名称
        $file = './uploads\\'.$savePath;//文件路径,必须是本地的。

        try{
            $ossClient->uploadFile($bucket,$object,$file);
            if ($isunlink==true){
                unlink($file);
            }
        }catch (OssException $e){
            $e->getErrorMessage();
        }
        $oss=config('aliyun_oss.url');
        $web = "";//为自己bucket的外网访问地址
        return $web.$oss."/".$object;
    }
}

在tp框架中的extend中创建类文件,位置随意,注意命名空间要随类文件位置变动。

这里的返回值就是你上传图片完成后的OSS地址,可直接入库保存

上面的阿里云配置我是写到了config中,直接填写也可以

//阿里云配置
    'aliyun_oss' => [
        'accessKeyId'      => '',  //您的Access Key ID 必填
        'accessKeySecret'  => '',  //您的Access Key Secret 必填
        'endpoint'   => 'oss-cn-shanghai.aliyuncs.com',  //阿里云oss 外网地址endpoint 必填 从你的OSS首页就能看到
        'bucket'     => '',  //Bucket名称 非必填
        'url'           => ''  // 访问的地址 非必填
    ]

三、使用

public function addDo(Request $request)
    {
        $data = $request->post();
        $data['image'] = $request->file('image');
        //验证
        $rules = [
            'title' => 'require',
            'name' => 'require',
            'desc' => 'require',
            'image' => 'require',
        ];
        $msg = [
            'title.require' => '文章标题不能为空',
            'name.require' => '发布者不能为空',
            'desc.require' => '文章简介不能为空',
            'image.require' => '文章图片不能为空',

        ];
        $res = $this->validate($data,$rules,$msg);
        if($res !== true){
            return $this->error($res);
        }
        //获取上传文件
        $file = $data['image'];
            // 移动到框架应用根目录/public/uploads/ 目录下
        $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
        if($info){        // 成功上传后 获取上传信息
            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            $image = $info->getSaveName();
        }else{        // 上传失败获取错误信息
            echo $file->getError();
        }
        //上传阿里云
        $data['image'] = $this->aliyun($image,'','','gzs123');

        //文章添加
        $add_res = articleModel::create($data);
        if($add_res){
            return $this->success('添加成功','month/article/listShow');
        }else{
            return $this->error('网络错误');
        }
    }

上传文件部分直接参考tp5手册,讲解的很详细。主要是上传阿里云方法传递的参数。

第一个位置为上传到OSS的文件地址,最后一个为你的阿里云bucket名称。中间两个参数为空即可,一定不要省略掉。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奶派三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值