tp5+腾讯云cos(对象存储)实现上传图片、视频等文件
一、从腾讯云控制台中开通cos
二、下载cos的sdk。SDK 安装有三种方式:Composer 方式、Phar 方式 和 源码方式。
本章用的最笨的源码方式。
下载完成后解压放至TP5的第三方类库extend/下(感觉文件名太长可以将文件名改了我的就叫tengxunyun)
然后说下腾讯云cos的配置参数:
appid个人实名认证中获得
其中SecretId和SecretKey参数在腾讯云-》对象存储-》秘钥管理获得
bucket 参数可直接请求接口,也可同样在腾讯云-》对象存储-》存储桶列表直接创建
$region = config(‘tengxunyun_cos.endpoint’); //你的Bucket所有地域 例如上海 (ap-shanghai)写简称就可以
$appId = config(‘tengxunyun_cos.appId’); //账户中心的 APPid
$secretId = config(‘tengxunyun_cos.SecretId’); //开发者拥有的项目身份识别 ID
$secretKey = config(‘tengxunyun_cos.SecretKey’); //开发者拥有的项目身份密钥
// 存储空间名称
$bucket = config('tengxunyun_cos.bucket'); //COS中用于存储桶名称
其中region 地区在文档上也有介绍:
以下是对应的地区简称(了解就行):
//地域缩写
‘cn-east’=>‘ap-shanghai’,
‘cn-sorth’=>‘ap-guangzhou’,
‘cn-north’=>‘ap-beijing-1’,
‘cn-south-2’=>‘ap-guangzhou-2’,
‘cn-southwest’=>‘ap-chengdu’,
‘sg’=>‘ap-singapore’,
‘tj’=>‘ap-beijing-1’,
‘bj’=>‘ap-beijing’,
‘sh’=>‘ap-shanghai’,
‘gz’=>‘ap-guangzhou’,
‘cd’=>‘ap-chengdu’,
‘sgp’=>‘ap-singapore’
简单的对象上传请求:
/**
* 腾讯云Cos – 上传对象
*
*
*
*/
private function qcloudCosUpload($file_name = ‘file’)
{
require_once env('root_path').'extend'.DIRECTORY_SEPARATOR.'tenxunyun'.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';
$key = upload($file_name);
$region = config('tengxunyun_cos.endpoint');
$appId = config('tengxunyun_cos.appId');
$secretId = config('tengxunyun_cos.SecretId');
$secretKey = config('tengxunyun_cos.SecretKey');
// 存储空间名称
$bucket = config('tengxunyun_cos.bucket');
// $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
// $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
// $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new QcloudCosClient(
- List item
//方法的路径一定要写对,否则一直报错,小编就调了两个小时
array(
‘region’ => $region,
‘schema’ => ‘https’, //协议头部,默认为http
‘credentials’=> array(
‘secretId’ => $secretId,
‘secretKey’ => $secretKey
)
)
);
try {
$result = $cosClient->putObject(array(
'Bucket' => $bucket, //格式:BucketName-APPID
'Key' => $key['data'],
'Body' => fopen($key['img'], 'rb'), //这里一定要填写正确,否则上传到cos的文件全是0kb
));
// 请求成功
if($result){
unlink($key['img']); //删除本地文件
$resData['code'] = 200;
$resData['data'] = "https://" . $result['Location'];;
return $resData;
}
// return $result;
} catch (Exception $e) {
// 请求失败
$resData['code'] = 201;
$resData['data'] = '';
return $resData;
// echo($e);
}
}
至此,简单的上传对象就完成了,我从网上找了很多,后来自己琢磨出来的,希望对你有帮助!!
相关文章
- EasyCVR对接华为iVS订阅摄像机和用户变更请求接口介绍
- 精选 | 腾讯云CDN内容加速场景有哪些?
- 模块化网络防止基于模型的多任务强化学习中的灾难性干扰
- 用搜索和注意力学习稳健的调度方法
- 用于多变量时间序列异常检测的学习图神经网络
- 助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?
- 使用腾讯轻量云搭建Fiora聊天室
- TSRC安全测试规范
- 云计算“功守道”
- 助力成本优化,腾讯全场景在离线混部系统Caelus正式开源
- Flink 利器:开源平台 StreamX 简介
- 腾讯云实践 | 一图揭秘腾讯碳中和?解决方案
- 深度学习中的轻量级网络架构总结与代码实现
- 信息系统项目管理师(高项复习笔记三)
- Adobe国际认证让科技赋能时尚
- c++该怎么学习(面试吃土记)
- 面试官问发布订阅模式是在问什么?
- 面试官:请实现一个通用函数把 callback 转成 promise
- 空中悬停、翻滚转身、成功着陆,我用强化学习「回收」了SpaceX的火箭
- 中山大学林倞解读视觉语义理解新趋势:从表达学习到知识及因果融合