以前写过一个接入阿里的OSS对象存储的,现在又简单写了个 腾讯COS对象存储。
这里只有COS使用方式,如果对接TP上传 可以去参考 :http://www.cnblogs.com/inkwhite/p/8582077.html
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'
thinkphp引用第三方类库
SDK 放在 根目录下/extend/
我的路径/extend/qcloud/cos-sdk-v5
//引用COS sdk \think\Loader::import('qcloud.cos-sdk-v5.cos-autoloader');
/** * 腾讯对象存储-文件上传 * @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 '上传失败'; } }