laravel视频上传到腾讯云cos对象存储,Phar方式实现开发

laravel视频上传到腾讯云cos对象存储,Phar方式实现开发

Ezra
2021-05-26 / 0 评论 / 461 阅读 / 正在检测是否收录...
  1. 申请产品
  2. 创建存储桶
    微信截图_20210526091641.png
  3. 获取访问秘钥
    访问秘钥在个人信息里的访问管理设置而并非在产品的控制台里

微信截图_20210526101223.png

  1. 根据文档进行sdk开发,下载cos的sdk
    这一步是我进行开发中遇到的最大的坑,首先我根据官方文档的方式去用composer的方式去下载可是始终下不下来,来来回回折腾了一上午都没搞定,不过文档中还有一个方法: Phar方法

微信截图_20210526165134.png
根据官方文档下载下来之后把他放在你项目里面,然后用到它的时候引一下就可以了

require  '/path/to/cos-sdk-v5.phar';

我是用laravel进行的开发所以贴出我的代码

<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;

use App\Traits\BaseFun;
use Qcloud\Cos\Client;

class UploadController extends Controller
{
    public function __construct(
    ) {
    }

    private $secretId = "你的密钥"; //"云 API 密钥 SecretId";
    private $secretKey = "你的SecretKey"; //"云 API 密钥 SecretKey";
    private $region = "默认的存储桶地域"; //设置一个默认的存储桶地域
    private $bucket = "你的存储桶"; //存储桶名称 格式:BucketName-APPID
    private function __cosClient(){
        require  'cos/cos-sdk-v5.phar';//你刚才下载的phar路径
        return $cosClient = new Client(
            array(
                'schema' => 'http', //协议头部,默认为http
                'region' => $this->region,
                'credentials'=> array(
                    'secretId'  => $this->secretId ,
                    'secretKey' => $this->secretKey
                )
            )
        );
    }

    public function upload(Request $request)
    {
        //获取上传的文件
        $file = request()->file('file');
        //获取储存桶对象
        $cosClient = $this->__cosClient();
        // dd($file->getRealPath());
        //上传
        try {    
            $bucket = $this->bucket; //存储桶名称 格式:BucketName-APPID
            $key = 'video/'."abc".".".$file->getClientOriginalExtension(); //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识
            $srcPath = $file->getRealPath();//本地文件绝对路径
            $file = fopen($srcPath, 'rb');
            if ($file) {
                $result = $cosClient->Upload(
                    $bucket = $bucket,
                    $key = $key,
                    $body = $file);
            }
            // print_r($result);
            echo $result['Location'];
         } catch (\Exception $e) {
            echo "$e\n";
         }
        
    }

}

最后注意你上传的文件权限都是继承的存储桶的权限,如果你的存储桶权限是私有的,那么上传后并不能被别人看见
v2-69c870a5f30819dd4ae8eb8c133fe392_b.jpg

0

评论 (0)

取消