ThinkPHP5使用腾讯云COS上传图片代码详解

Thinkphp和腾讯云COS可以说是常见的组合方式之一,腾讯云COS存储是目前常见的文件云存储方式之一。

那么基于Thinkphp5要如何实现接入腾讯云COS存储图片呢?

本篇文章就来给出详细流程步骤:

一、安装cos-sdk-v5

composer require qcloud/cos-sdk-v5:*

二、代码中使用

public function tengxun_upload(){
$file = request()->file('file');
// 要上传图片的本地路径
$filePath = $file->getRealPath();
$ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION); //后缀
// 上传到腾讯云后保存的文件名
$key =substr(md5($file->getRealPath()) , 0, 5). date('YmdHis') . rand(0, 9999) . '.' . $ext;
// SECRETID 和 SECRETKEY 请登录访问管理控制台进行查看和管理
$secretId = 'SecretId'; //用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
$secretKey = 'SecretKey'; //用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
$region = "ap-chengdu"; //用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new \Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'http', //协议头部,默认为 http
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
try {
$bucket = "BucketName-APPID"; //存储桶名称 格式:BucketName-APPID
$file = fopen($filePath, "rb");
if ($file) {
$result = $cosClient->putObject(array(
'Bucket' => $bucket,
'Key' => $key,
'Body' => $file));
if (!$result) {
return json(["errno"=>1,"msg"=>'上传失败',"data"=>""]);
} else {
//返回图片的完整URL
return json(["errno"=>0,"msg"=>"上传完成","data"=> array($result["Key"])]);
}
}
} catch (\Exception $e) {
return ["errno"=>1,"msg"=>'上传失败',"data"=>""];
}
}

方法中需要再腾讯COS管理后台获取的数据如下:

    SecretId:账号SecretId

    SecretKey:账号SecretKey

    region:桶归属的region区域

    bucket:存储桶名称 格式:BucketName-APPID

六月初字帖坊小程序 你想要的字帖模板及工具,这里都有!