|
|
<?php
require 'vendor/autoload.php';
$cosClient = new Qcloud\Cos\Client(array( 'region' => 'COS_REGION', #地域,如ap-guangzhou,ap-beijing-1
'credentials' => array( 'secretId' => 'COS_KEY', 'secretKey' => 'COS_SECRET', ), ));
// 若初始化 Client 时未填写 appId,则 bucket 的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
$bucket = 'test2-1252448703'; $key = 'a.txt'; $local_path = "E:/a.txt";
# 上传文件
## putObject(上传接口,最大支持上传5G文件)
### 上传内存中的字符串
try { $result = $cosClient->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => 'Hello World!' )); print_r($result); # 可以直接通过$result读出返回结果
echo ($result['ETag']); } catch (\Exception $e) { echo($e); }
### 上传文件流
try { $result = $cosClient->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen($local_path, 'rb') )); print_r($result); } catch (\Exception $e) { echo($e); }
### 设置header和meta
try { $result = $cosClient->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen($local_path, 'rb'), 'ACL' => 'string', 'CacheControl' => 'string', 'ContentDisposition' => 'string', 'ContentEncoding' => 'string', 'ContentLanguage' => 'string', 'ContentLength' => integer, 'cONTENTType' => 'string', 'Expires' => 'mixed type: string (date format)|int (unix timestamp)|\DateTime', 'GrantFullControl' => 'string', 'GrantRead' => 'string', 'GrantWrite' => 'string', 'Metadata' => array( 'string' => 'string', ), 'StorageClass' => 'string' )); print_r($result); } catch (\Exception $e) { echo($e); }
## Upload(高级上传接口,默认使用分块上传最大支持50T)
### 上传内存中的字符串
try { $result = $cosClient->upload( $bucket = $bucket, $key = $key, $body = 'Hello World!' ); print_r($result); } catch (\Exception $e) { echo($e); }
### 上传文件流
try { $result = $cosClient->upload( $bucket = $bucket, $key = $key, $body = fopen($local_path, 'rb') ); print_r($result); } catch (\Exception $e) { echo($e); }
### 设置header和meta
try { $result = $cosClient->upload( $bucket = $bucket, $key = $key, $body = fopen($local_path, 'rb'), $options = array( 'ACL' => 'string', 'CacheControl' => 'string', 'ContentDisposition' => 'string', 'ContentEncoding' => 'string', 'ContentLanguage' => 'string', 'ContentLength' => integer, 'ContentType' => 'string', 'Expires' => 'mixed type: string (date format)|int (unix timestamp)|\DateTime', 'GrantFullControl' => 'string', 'GrantRead' => 'string', 'GrantWrite' => 'string', 'Metadata' => array( 'string' => 'string', ), 'StorageClass' => 'string' ) ); print_r($result); } catch (\Exception $e) { echo($e); }
## 预签名上传createPresignedUrl
## 获取带有签名的url
### 简单上传预签名
try { #此处可以替换为其他上传接口
$command = $cosClient->getCommand('putObject', array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => '', //Body可以任意
)); $signedUrl = $command->createPresignedUrl('+10 minutes'); echo ($signedUrl); } catch (\Exception $e) { echo($e); }
### 分块上传预签名
try { #此处可以替换为其他上传接口
$command = $cosClient->getCommand('uploadPart', array( 'Bucket' => $bucket, 'Key' => $key, 'UploadId' => '', 'PartNumber' => '1', 'Body' => '', //Body可以任意
)); $signedUrl = $command->createPresignedUrl('+10 minutes'); echo ($signedUrl); } catch (\Exception $e) { echo($e); }
### 获取签名
try { #此处可以替换为其他上传接口
$command = $cosClient->getCommand('putObject', array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => '', //Body可以任意
)); $signedUrl = $command->createAuthorization('+10 minutes'); echo ($signedUrl); } catch (\Exception $e) { echo($e); }
# 下载文件
## getObject(下载文件)
### 下载到内存
try { $result = $cosClient->getObject(array( 'Bucket' => $bucket, 'Key' => $key )); echo $result['Body']; } catch (\Exception $e) { echo($e); }
### 下载到本地
try { $result = $cosClient->getObject(array( 'Bucket' => $bucket, 'Key' => $key, 'SaveAs' => $local_path )); } catch (\Exception $e) { echo($e); }
### 指定下载范围
/* * Range 字段格式为 'bytes=a-b' */ try { $result = $cosClient->getObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Range' => 'bytes=0-10', 'SaveAs' => $local_path )); } catch (\Exception $e) { echo($e); }
### 设置返回header
try { $result = $cosClient->getObject(array( 'Bucket' => $bucket, 'Key' => $key, 'ResponseCacheControl' => 'string', 'ResponseContentDisposition' => 'string', 'ResponseContentEncoding' => 'string', 'ResponseContentLanguage' => 'string', 'ResponseContentType' => 'string', 'ResponseExpires' => 'mixed type: string (date format)|int (unix timestamp)|\DateTime', 'SaveAs' => $local_path )); } catch (\Exception $e) { echo($e); }
## getObjectUrl(获取文件UrL)
try { $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); echo $signedUrl; } catch (\Exception $e) { echo($e); }
# 删除object
## deleteObject
try { $result = $cosClient->deleteObject(array( 'Bucket' => $bucket, 'Key' => $key, 'VersionId' => 'string' )); print_r($result); } catch (\Exception $e) { echo($e); }
# 删除多个object
## deleteObjects
try { $result = $cosClient->deleteObjects(array( 'Bucket' => 'string', 'Objects' => array( array( 'Key' => $key, 'VersionId' => 'string', ), // ... repeated
), )); print_r($result); } catch (\Exception $e) { echo($e); }
# 获取object信息
## headObject
/* * 可代替isObjectExist接口,查询object是否存在 */ try { $result = $cosClient->headObject(array( 'Bucket' => $bucket, 'Key' => '11', 'VersionId' => '111', )); print_r($result); } catch (\Exception $e) { echo($e); }
# 获取bucket列表
## listBuckets
try { $result = $cosClient->listBuckets(); print_r($result); } catch (\Exception $e) { echo($e); }
# 创建bucket
## createBucket
try { $result = $cosClient->createBucket(array('Bucket' => $bucket)); print_r($result); } catch (\Exception $e) { echo($e); }
# 删除bucket
## deleteBucket
try { $result = $cosClient->deleteBucket(array( 'Bucket' => $bucket )); print_r($result); } catch (\Exception $e) { echo($e); }
# 获取bucket信息
## headBucket
/* * 可代替isBucketExist接口,查询bucket是否存在 */ try { $result = $cosClient->headBucket(array( 'Bucket' => $bucket )); print_r($result); } catch (\Exception $e) { echo($e); }
# 列出bucket下的object
## listObjects
### 列出所有object
/* * 该接口一次最多列出1000个,需要列出所有请参考其他服务中的清空并删除bucket接口 */ try { $result = $cosClient->listObjects(array( 'Bucket' => $bucket )); foreach ($result['Contents'] as $rt) { print_r($rt); } } catch (\Exception $e) { echo($e); }
### 列出带有前缀的object
try { $result = $cosClient->listObjects(array( 'Bucket' => $bucket, 'Prefix' => 'string' )); foreach ($result['Contents'] as $rt) { print_r($rt); } } catch (\Exception $e) { echo($e); }
# 获取bucket地域
## getBucketLocation
try { $result = $cosClient->getBucketLocation(array( 'Bucket' => 'lewzylu02', )); } catch (\Exception $e) { echo($e); };
# 多版本相关
## putBucketVersioning(开启关闭某个bucket的多版本)
try { $result = $cosClient->putBucketVersioning(array( 'Bucket' => $bucket, 'Status' => 'Enabled' )); print_r($result); } catch (\Exception $e) { echo($e); }
## ListObjectVersions(列出多版本object)
/* * 同名文件会出现多个版本 */ try { $result = $cosClient->listObjectVersions(array( 'Bucket' => $bucket, 'Prefix' => 'string' )); print_r($result); } catch (\Exception $e) { echo($e); }
## getBucketVersioning(获取某个bucket多版本属性)
try { $result = $cosClient->getBucketVersioning( array('Bucket' => $bucket)); print_r($result); } catch (\Exception $e) { echo($e); }
# ACL相关
## PutBucketAcl(设置bucketACL)
try { $result = $cosClient->putBucketAcl(array( 'Bucket' => $bucket, 'Grants' => array( array( 'Grantee' => array( 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', 'ID' => 'qcs::cam::uin/327874225:uin/327874225', 'Type' => 'CanonicalUser', ), 'Permission' => 'FULL_CONTROL', ), // ... repeated
), 'Owner' => array( 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', ))); print_r($result); } catch (\Exception $e) { echo($e); }
## getBucketAcl(获取bucketACL)
try { $result = $cosClient->getBucketAcl(array( 'Bucket' => $bucket)); print_r($result); } catch (\Exception $e) { echo($e); }
## putObjectAcl(设置objectACL)
try { $result = $cosClient->putObjectAcl(array( 'Bucket' => $bucket, 'Key' => $key, 'Grants' => array( array( 'Grantee' => array( 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', 'ID' => 'qcs::cam::uin/327874225:uin/327874225', 'Type' => 'CanonicalUser', ), 'Permission' => 'FULL_CONTROL', ), // ... repeated
), 'Owner' => array( 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', ))); print_r($result); } catch (\Exception $e) { echo($e); }
## GetObjectAcl(获取objectACL)
try { $result = $cosClient->getObjectAcl(array( 'Bucket' => $bucket, 'Key' => $key)); print_r($result); } catch (\Exception $e) { echo($e); }
# 生命周期相关
## putBucketLifecycle(设置bucket生命周期)
try { $result = $cosClient->putBucketLifecycle(array( 'Bucket' => $bucket, 'Rules' => array( array( 'Expiration' => array( 'Days' => 1000, ), 'ID' => 'id1', 'Filter' => array( 'Prefix' => 'documents/', ), 'Status' => 'Enabled', 'Transitions' => array( array( 'Days' => 200, 'StorageClass' => 'NEARLINE'), ), ), ))); print_r($result); } catch (\Exception $e) { echo($e); }
## getBucketLifecycle(获取bucket生命周期)
try { $result = $cosClient->getBucketLifecycle(array( 'Bucket' => $bucket, )); print_r($result); } catch (\Exception $e) { echo($e); }
## deleteBucketLifecycle(删除bucket生命周期)
try { $result = $cosClient->deleteBucketLifecycle(array( 'Bucket' => $bucket, )); print_r($result); } catch (\Exception $e) { echo($e); }
# 跨域相关
## putBucketCors(设置bucket跨域)
try { $result = $cosClient->putBucketCors(array( 'Bucket' => $bucket, 'CORSRules' => array( array( 'ID' => '1234', 'AllowedHeaders' => array('*'), 'AllowedMethods' => array('PUT'), 'AllowedOrigins' => array('http://www.qq.com'), ), ), )); print_r($result); } catch (\Exception $e) { echo($e); }
## getBucketCors(获取bucket跨域信息)
try { $result = $cosClient->getBucketCors(array()); print_r($result); } catch (\Exception $e) { echo($e); }
## deleteBucketCors(删除bucket跨域)
try { $result = $cosClient->deleteBucketCors(array( // Bucket is required
'Bucket' => $bucket, )); print_r($result); } catch (\Exception $e) { echo($e); }
# 跨区域复制相关
## PutBucketReplication(设置bucket跨区域复制)
### 注意:目标bucket和源bucket都需要开启多版本
try { $result = $cosClient->putBucketReplication(array( 'Bucket' => $bucket, 'Role' => 'qcs::cam::uin/327874225:uin/327874225', 'Rules'=>array( array( 'Status' => 'Enabled', 'ID' => 'string', 'Prefix' => 'string', 'Destination' => array( 'Bucket' => 'qcs::cos:ap-guangzhou::lewzylu01-1252448703', 'StorageClass' => 'standard', ), // ...repeated
), ), )); print_r($result); } catch (\Exception $e) { echo($e); }
## GetBucketReplication(获取bucket跨区域复制信息)
try { $result = $cosClient->getBucketReplication(array( 'Bucket' => $bucket )); print_r($result); } catch (\Exception $e) { echo($e); }
## DeleteBucketReplication(删除bucket跨区域复制信息)
try { $result = $cosClient->deleteBucketReplication(array( 'Bucket' => $bucket )); print_r($result); } catch (\Exception $e) { echo($e); }
# 回调相关
## PutBucketNotification
try { $result = $cosClient->putBucketNotification(array( "Bucket" => $bucket, "CloudFunctionConfigurations"=> array( array( "Id" => "test-1", "Filter" => array( "Key" => array( "FilterRules" => array( array( "Name" => "Prefix", "Value" => "111" ), array( "Name" => "Suffix", "Value" => "111" ), ), ) ), "CloudFunction" => "qcs:0:video:sh:appid/1253125191:video/10010", "Events" => array( 'Event' => "cos:ObjectCreated:*" ) ), array( "Id" => "test-2", "Filter" => array( "Key" => array( "FilterRules" => array( array( "Name" => "Prefix", "Value" => "111" ), array( "Name" => "Suffix", "Value" => "111" ), ), ) ), "CloudFunction" => "qcs:0:video:sh:appid/1253125191:video/10010", "Events" => array( 'Event' => "cos:ObjectRemove:*" ) ), )) ); print_r($result); } catch (\Exception $e) { echo($e); }
## GetBucketNotification
try { $result = $cosClient->getBucketNotification(array( 'Bucket' => $bucket )); print_r($result); } catch (\Exception $e) { echo($e); }
# 复制
## copyobject(简单复制)
/* * 将{bucket},{region},{cos_path},{versionId}替换成复制源的真实信息 */ try { $result = $cosClient->copyObject(array( 'Bucket' => $bucket, 'CopySource' => '{bucket}.cos.{region}.myqcloud.com/{cos_path}?versionId={versionId}', 'Key' => 'string', )); print_r($result); } catch (\Exception $e) { echo($e); }
## Copy(分块并发复制)
/* * 将{bucket},{region},{cos_path},{versionId}替换成复制源的真实信息 */ try { $result = $cosClient->copy( $bucket = $bucket, $key = $key, $copysource = '{bucket}.cos.{region}.myqcloud.com/{cos_path}', $options = array('VersionId' => '{versionId}' )); print_r($result); } catch (\Exception $e) { echo($e); }
# 恢复归档文件
## restoreObject
try { $result = $cosClient->restoreObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Days' => 7, 'CASJobParameters' => array( 'Tier' => 'Bulk', ), )); print_r($result); } catch (\Exception $e) { echo($e); }
# 其他服务
## 列出某bucket下所有的object
try { $prefix = ''; $marker = ''; while (true) { $result = $cosClient->listObjects(array( 'Bucket' => $bucket, 'Marker' => $marker, 'MaxKeys' => 1000 )); foreach ($result['Contents'] as $rt) { print_r($rt['Key'] . " "); /* * 使用下面的代码可以删除全部object */ // try {
// $result = $cosClient->deleteobjects(array(
// 'Bucket' => $bucket,
// 'Key' => $rt['Key']));
// print_r($result);
// } catch (\Exception $e) {
// echo($e);
// }
} $marker = $result['NextMarker']; if (!$result['IsTruncated']) { break; } } } catch (\Exception $e) { echo($e); }
## 删除所有因上传失败而产生的分块
/* * 可以清理掉因分块上传失败 */ try { while (true) { $result = $cosClient->listMultipartUploads( array('Bucket' => $bucket, 'Prefix' => '')); if (count($result['Uploads']) == 0) { break; } foreach ($result['Uploads'] as $upload) { try { $rt = $cosClient->abortMultipartUpload(array( 'Bucket' => $bucket, 'Key' => $upload['Key'], 'UploadId' => $upload['UploadId'] )); print_r($rt); } catch (\Exception $e) { echo($e); } } } } catch (\Exception $e) { echo($e); }
## 分块上传断点重传
/* * 仅适用于分块上传失败的情况 * 需要填写上传失败的uploadId */ try { $result = $cosClient->resumeUpload( $bucket = $bucket, $key = $key, $body = fopen("E:/test.txt", 'rb'), $uploadId = '152448808231afdf221eb558ab15d1e455d2afd025c5663936142fdf5614ebf6d1668e2eda' ); print_r($result); } catch (\Exception $e) { echo($e); }
## 删除某些前缀的空bucket
function startsWith($haystack, $needle) { $length = strlen($needle); return (substr($haystack, 0, $length) === $needle); }
try { $result = $cosClient->listBuckets(); foreach ($result['Buckets'] as $bucket) { $region = $bucket['Location']; $name = $bucket['Name']; if (startsWith($name, 'lewzylu')) { try { $cosClient2 = new Qcloud\Cos\Client(array( 'region' => $region, 'credentials' => array( //getenv为获取本地环境变量,请替换为真实密钥
'secretId' => getenv('COS_KEY'), 'secretKey' => getenv('COS_SECRET')) )); $rt = $cosClient2->deleteBucket(array('Bucket' => $name)); print_r($rt); } catch (\Exception $e) { } } } } catch (\Exception $e) { echo($e); }
|