- 申请产品
- 创建存储桶
- 获取访问秘钥
访问秘钥在个人信息里的访问管理设置而并非在产品的控制台里
- 根据文档进行sdk开发,下载cos的sdk
这一步是我进行开发中遇到的最大的坑,首先我根据官方文档的方式去用composer的方式去下载可是始终下不下来,来来回回折腾了一上午都没搞定,不过文档中还有一个方法: Phar方法
根据官方文档下载下来之后把他放在你项目里面,然后用到它的时候引一下就可以了
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";
}
}
}
最后注意你上传的文件权限都是继承的存储桶的权限,如果你的存储桶权限是私有的,那么上传后并不能被别人看见
评论 (0)