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

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

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

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

一、安装cos-sdk-v5

  1. composer require qcloud/cos-sdk-v5:*

二、代码中使用

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

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

    SecretId:账号SecretId

    SecretKey:账号SecretKey

    region:桶归属的region区域

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

铁子们,抗不住了。点点广告可好,感谢您的支持。
六月初字帖坊小程序 你想要的字帖模板及工具,这里都有!