以前写过一个接入阿里的OSS对象存储的,现在又简单写了个 腾讯COS对象存储。
SDK 获取
1. GitHub
#在GitHub中获取代码
https://github.com/tencentyun/cos-php-sdk-v5
腾讯的参数比阿里的参数要多
appId 账户中心的 APPid
SecretId 开发者拥有的项目身份识别 ID,用以身份认证
secretKey 开发者拥有的项目身份密钥
region 你的Bucket所有地域 例如上海 (sh)写简称就可以
bucket COS中用于存储数据的容器
Key 你文件上传的文件名称 (例:20180818/xxx.jpg) 注意路径 "/" window下的是 "\" 这样的话上传上去不会自动创建文件夹。
file 你要上传的本地文件地址
请求错误码:https://cloud.tencent.com/document/product/436/7730
'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'
/**
* 腾讯对象存储-文件上传
* @datatime 2018/05/17 09:20
* @author lgp
*/
public function qcloudCosUpload( $file = '' , $info = array() , $fileInfo ){
if( !$file || !$info ){
return '缺少参数';
}
//引用COS sdk
\think\Loader::import('qcloud.cos-sdk-v5.cos-autoloader');
$cosClient = new \Qcloud\Cos\Client(
array(
'region' => config('QCLOUD_COS.region'),
'credentials' => array(
'appId' => config('QCLOUD_COS.appId'),
'secretId' => config('QCLOUD_COS.SecretId'),
'secretKey' => config('QCLOUD_COS.SecretKey')
)
)
);
$file = $info['pathname'];
try {
$data = array( 'Bucket' => config('QCLOUD_COS.bucket'), 'Key' => $info['saveName'], 'Body' => fopen($file, 'rb') );
//判断文件大小 大于5M就分块上传
$result = $cosClient->Upload( $data['Bucket'] , $data['Key'] , $data['Body'] );
//上传成功,自己编码
if( $result ){
if( config('QCLOUD_COS.unlink_file') == 1){
//是否删除本地
//unlink($file);
}
return 'ok';
}
} catch (\Exception $e) {
echo "$e\n";die;
return '上传失败';
}
}
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!