[php-cos]ThinkPHP项目集成腾讯云储存对象COS

Cos技术文档

1、安装phpSdk

通过composer的方式安装。

1.1 在composer.json中添加 qcloud/cos-sdk-v5: >=2.0

c 复制代码
  "require": {
        "php": ">=7.2.5",
        "topthink/framework": "^6.1.0",
        "topthink/think-orm": "^2.0",
        "topthink/think-filesystem": "^1.0",
        "zoujingli/wechat-developer": "^1.2",
        "qcloud/cos-sdk-v5": ">=2.0"
    },

将composer.lock删除,然后运行composer install 就安装成功了。

查看vendor中的是否存在qcloud\cos-sdk-v5,安装包中有使用的例子:sample文件夹中。

2、添加配置文件

3、编写cos工具类

c 复制代码
<?php

namespace app\common;

use think\facade\Config;
use Qcloud\Cos\Client;

class CosClient
{




    public static function uploadFile()
    {
        ### 上传文件流
        try {
            $qcloudConfig = Config::get("cosClient");
            $bucket = $qcloudConfig["bucket"]; //存储桶名称 格式:BucketName-APPID
            $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识
            $srcPath = "C:/Users/nima/Desktop/Snipaste_2023-07-26_14-59-39.png"; //本地文件绝对路径
            $file = fopen($srcPath, 'rb');
            if ($file) {
                $result = CosClient::cosClient()->Upload(
                    $bucket = $bucket,
                    $key = $key,
                    $body = $file
                );
            }
            print_r($result);
        } catch (\Exception $e) {
            echo "$e\n";
        }
    }

    public static function cosClient()
    {
        $qcloudConfig = Config::get("cosClient");

        $secretId = $qcloudConfig["secretId"];
        $secretKey = $qcloudConfig["secretKey"];
        $region = $qcloudConfig["region"];


        $cosClient = new Client(
            array(
                'region' => $region,
                'schema' => 'https', //协议头部,默认为http
                'credentials' => array(
                    'secretId'  => $secretId,
                    'secretKey' => $secretKey
                )
            )
        );
        return $cosClient;
    }
}

测试:

c 复制代码
<?php

namespace app\controller;

use app\BaseController;
use think\Request;


use app\model\User;
use think\facade\Config;
use app\common\CosClient;



class CosController extends BaseController
{

    /**
     * 上传文件cos
     */
    public function cosUploadFile()
    {
        CosClient::uploadFile();
    }

}

postman请求:

成功报错:

c 复制代码
GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: self signed certificate in certificate
chain (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for
https://shushan-1259593927.cos.ap-nanjing.myqcloud.com/exampleobject in
F:\shushan-server\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:211
Stack trace:
#0 F:\shushan-server\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(158):
GuzzleHttp\Handler\CurlFactory::createRejection()
#1 F:\shushan-server\vendor\guzzlehttp\guzzle\src\Handler\Curl

按照报错指示,查看https://curl.haxx.se/libcurl/c/libcurl-errors.html找到解决办法:

下载pem证书,配置证书。

curl pem证书下载地址

将证书保存在:D:/phpstudy_pro/Extensions/php/php8.0.2nts/extras/ssl/cacert.pem

打开PHP.ini配置文件:配置证书:curl.cainfo

重启小皮

再次postman访问:成功了!


相关推荐
2501_9418771316 小时前
在法兰克福企业级场景中落地零信任安全架构的系统设计与工程实践分享
开发语言·php
leiming616 小时前
c++ QT 开发第二天,用ui按钮点亮实体led
开发语言·qt·ui
2501_9418824816 小时前
在开普敦跨区域部署环境中构建高可靠分布式配置中心的设计思路与实现实践
开发语言·c#
一只小小Java16 小时前
Java面试场景高频题
java·开发语言·面试
Ljubim.te16 小时前
inline介绍,宏定义的注意事项以及nullptr
c语言·开发语言·c++
亓才孓16 小时前
多态:编译时看左边,运行时看右边
java·开发语言
小白探索世界欧耶!~16 小时前
用iframe实现单个系统页面在多个系统中复用
开发语言·前端·javascript·vue.js·经验分享·笔记·iframe
2501_9418787416 小时前
在奥克兰云原生实践中构建动态配置中心以支撑系统稳定演进的工程经验总结
开发语言·python
weixin_4432978816 小时前
Python打卡训练营第31天
开发语言·python
围炉聊科技16 小时前
Vibe Kanban:Rust构建的AI编程代理编排平台
开发语言·rust·ai编程