Thinkphp6---上传图片至阿里云OSS

在做项目的时候,以往的开发模式都是把图片直接存在项目服务器里面,但是这种存放就会导致系统非常大,特别是附件目录,然后如果项目进行迁移或者备份的时候就会导致很大,而且访问量大还会导致服务器IO变大,然后加载还慢,导致服务器性能大大折扣,使用OSS对象存储就能很好解决这个问题,而且还可以做缓存,以及CDN加速等等。

简单示例:

composer require aliyuncs/oss-sdk-php

创建一个文件夹,然后使用 composer 下载:

image

我们只需要 OSS 目录,然后将其放到拓展里面 extends 里面:好处是可控,不直接放到vender里面,项目里加载也可以直接在项目目录里面引入这个包

image

然后就是很简单的代码了:

use OSS\OssClient;

具体代码:

public function upload()
{
        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
        $accessKeyId = "LTAIkXQ422HE57dD";
        $accessKeySecret = "I0xtX8b2hhNTpHVoN8zRRE8H2KfUn0";
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        $endpoint = "http://oss-cn-beijing.aliyuncs.com";
        // 设置存储空间名称。
        $bucket= "qing0707";
        // 设置文件名称。
        $object = time();
        // <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
        $filePath = 'D:\upupw\vhosts\qj.fyz.com\public\static\images\logo.png';

        try{
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
            // 上传 
            $ossClient->uploadFile($bucket, $object, $filePath);
            // 如果Bucket是私有的,您需要生成一个带签名的URL
            // $url = $ossClient->signUrl($bucket, $object, 3600); // 1小时后过期
            // 输出访问URL
            echo "文件上传成功,访问URL: " . $url . "\n";            
            // 删除临时文件
            // @unlink($filePath);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        print(__FUNCTION__ . ": OK" . "\n");
    }

打完收工!

posted @ 2025-12-31 13:58  帅到要去报警  阅读(12)  评论(0)    收藏  举报