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

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

使用的是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是否一致

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

看完了?还不点个赞?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 ThinkPHP 集成阿里云 OSS 的代码示例: 1. 安装阿里云 OSS SDK 在项目根目录下的 `composer.json` 文件中添加阿里云 OSS SDK 的依赖: ``` "require": { "aliyuncs/oss-sdk-php": "^2.5" } ``` 然后执行 `composer install` 来安装依赖。 2. 配置阿里云 OSS 在 `config` 目录下新建 `oss.php` 配置文件,并添加以下内容: ```php return [ 'access_key_id' => 'your_access_key_id', 'access_key_secret' => 'your_access_key_secret', 'bucket' => 'your_bucket_name', 'endpoint' => 'your_endpoint', ]; ``` 其中,`access_key_id` 和 `access_key_secret` 是您的阿里云账号的 Access Key ID 和 Access Key Secret,`bucket` 是您的 OSS 存储桶名称,`endpoint` 是您的 OSS 访问域名。 3. 初始化阿里云 OSS 在 `app` 目录下新建 `common.php` 文件,并添加以下内容: ```php use OSS\OssClient; if (!function_exists('oss')) { function oss() { $config = config('oss'); $ossClient = new OssClient( $config['access_key_id'], $config['access_key_secret'], $config['endpoint'] ); return $ossClient; } } ``` 这里我们使用了一个自定义的全局函数 `oss()` 来初始化阿里云 OSS 客户端。 4. 上传文件阿里云 OSS ```php use OSS\Core\OssException; try { $result = oss()->uploadFile( $bucket, $object, $file ); } catch (OssException $e) { // 处理异常 } ``` 其中,`$bucket` 是您的 OSS 存储桶名称,`$object` 是上传OSS 的文件路径和文件名,`$file` 是本地要上传的文件路径。 5. 下载文件 ```php use OSS\Core\OssException; try { oss()->getObject( $bucket, $object, $options ); } catch (OssException $e) { // 处理异常 } ``` 其中,`$bucket` 是您的 OSS 存储桶名称,`$object` 是要下载的文件路径和文件名,`$options` 是一个可选的参数数组,用于指定下载文件的一些选项,比如 `fileDownload` 用于指定下载时的文件名。 以上是使用 ThinkPHP 集成阿里云 OSS 的基本操作示例。如果您需要进行其他操作,可以参考阿里云 OSS SDK 的文档和 API 参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值