[TP教程]Thinkphp调用阿里云OSS上传文件五分钟集成实例

本文介绍了如何在ThinkPHP5.1项目中集成阿里云OSS服务进行文件上传,包括安装SDK、配置、编写上传控制器及解决常见问题。通过Composer安装阿里云OSS SDK,创建控制器处理文件上传,配置应用的aliyun_oss参数,如KeyId、KeySecret、Endpoint和Bucket。在遇到问题时,检查文件上传key值、Bucket名称和endpoint的一致性。完成配置后,通过POST请求测试文件上传功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

也是随手写的,帮一个实习生做的,顺便写出来

使用的是thinkphp5.1(6.0+也一样) + composer require aliyuncs/oss-sdk-php 教程比较简单,全部写在一个控制器文件里

实现步骤

  1. composer require aliyuncs/oss-sdk-php 安装阿里云oss sdk
  2. 在app/index/controller/index.php中添加以下代码
     // 实例index控制器
    public function index()
    {
        if(request()->isPost()){//post处理文件上传
            $file = request()->file('fileUpload');
            $info = $file->move('./uploads'); //这里要注意下检查public目录权限
            if ($info) {
                $path = $info->getSaveName();
                $filepath = '你的oss绑定域名' . $path;
                $fileName = 'uploads/' . $path;
                $config=config('aliyun_oss');
                $this->uploadFile($config['Bucket'], $fileName, $path);
                return $path;
            } else {
                // 上传失败获取错误信息
                echo $file->getError();
            }
        	return json($file);
        }else{//get默认显示html
            return view('upload',['name'=>'测试上传']);
        }
    }
     /**
     * 实例化阿里云OSS
     * @return object 实例化得到的对象
     * @return 此步作为共用对象,可提供给多个模块统一调用
     */
    public function new_oss(){
        //获取配置项,并赋值给对象$config
        $config=config('aliyun_oss');
        //实例化OSS/*
        $oss=new \OSS\OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
        return $oss;
    }
 
     /**
     * 上传指定的本地文件内容
     * @param OssClient $ossClient OSSClient实例
     * @param string $bucket 存储空间名称
     * @param string $object 上传的文件名称
     * @param string $Path 本地文件路径
     * @return json
     */
    public function uploadFile($bucket,$object,$Path){
        //try 要执行的代码,如果代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示
        try{
            //没忘吧,new_oss()是我们上一步所写的自定义函数
            $ossClient =$this->new_oss();
            //uploadFile的上传方法
        $res=    $ossClient->uploadFile($bucket, $object, $Path);
            return json($res);
        } catch(OssException $e) {
            //如果出错这里返回报错信息
            return $e->getMessage();
        }
    }

3.设置配置文件 config/app.php(部分tp5为app/config.php)中添加以下配置

    'aliyun_oss' => [
        'KeyId'      => '************',  //您的Access Key ID
        'KeySecret'  => '*************',  //您的Access Key Secret
        'Endpoint'   => 'http://oss-cn-hangzhou.aliyuncs.com',  //阿里云oss 地域地址endpoint,不带Bucket
        'Bucket'     => '*****',  //Bucket名称
    ]

4.配置完成后 测试POST即可,默认相应为本地和oss文件存储路径,自己搭配域名即可,写的简单,拓展性高,欢迎大家补充

部分问题解决

1.file->move() null
检查request->file(‘file’);文件上传的key值是否相同
2. InvalidBucketName: The specified bucket is not valid.
检查Bucket名称和地域地址endpoint是否一致

其他没啥的了,具体参考阿里云官方文档

看完了?还不点个赞?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值