删除多个文件
您可以使用OssClient::deleteObjects批量删除多个文件:
- <?php
- /**
- * 批量删除object
- *
- * @param OssClient $ossClient OSSClient实例
- * @param string $bucket bucket名字
- * @return null
- */
- function deleteObjects($ossClient, $bucket)
- {
- $objects = array();
- $objects[] = "oss-php-sdk-test/upload-test-object-name.txt";
- $objects[] = "oss-php-sdk-test/upload-test-object-name.txt.copy";
- try{
- $ossClient->deleteObjects($bucket, $objects);
- } catch(OssException $e) {
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- print(__FUNCTION__ . ": OK" . "\n");
- }
拷贝文件
您可以使用OssClient::copyObject拷贝文件:
- <?php
- /**
- * 拷贝object
- *
- * @param OssClient $ossClient OSSClient实例
- * @param string $bucket bucket名字
- * @return null
- */
- function copyObject($ossClient, $bucket)
- {
- $from_bucket = $bucket;
- $from_object = "oss-php-sdk-test/upload-test-object-name.txt";
- $to_bucket = $bucket;
- $to_object = $from_object . '.copy';
- try{
- $ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object);
- } catch(OssException $e) {
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- print(__FUNCTION__ . ": OK" . "\n");
- }
注意:
- OssClient::copyObject可以拷贝小于1GB的文件。拷贝一个大于1GB的文件时,请使用OssClient::uploadPartCopy。
修改文件元信息(Object Meta)
文件元信息(Object Meta),是对用户上传到OSS的文件的属性描述,分为两种:HTTP标准属性(HTTP Headers)和User Meta(用户自定义元信息)。文件元信息可以在各种方式上传或者拷贝文件时进行设置。
HTTP标准属性,Cache-Control、Content-Disposition、Content-Encoding、Content-Language、Expires、Content-Length、Content-Type、Last-Modified等。
为了便于用户对Object进行更多描述。OSS中规定所有以x-oss-meta-为前缀的参数,则视为User Meta比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的User Meta总大小不能超过8k。这些User Meta信息会在下载文件/获取文件元数据时返回。
更多文件元信息的介绍,请参看
文件元信息。
可以通过拷贝操作来实现修改已有文件元信息。如果拷贝操作的源文件地址和目标文件地址相同,都会直接替换源文件的文件元信息。
- /**
- * 修改文件元信息
- * 利用copyObject接口的特性:当目的object和源object完全相同时,表示修改object的文件元信息
- *
- * @param OssClient $ossClient OSSClient实例
- * @param string $bucket 存储空间名称
- * @return null
- */
- function modifyMetaForObject($ossClient, $bucket)
- {
- $fromBucket = $bucket;
- $fromObject = "oss-php-sdk-test/upload-test-object-name.txt";
- $toBucket = $bucket;
- $toObject = $fromObject;
- $copyOptions = array(
- OssClient::OSS_HEADERS => array(
- 'Expires' => '2018-10-01 08:00:00',
- 'Content-Disposition' => 'attachment; filename="xxxxxx"',
- 'x-oss-meta-location' => 'location',
- ),
- );
- try{
- $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);
- } catch(OssException $e) {
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- print(__FUNCTION__ . ": OK" . "\n");
- }
提示:
- 通过修改文件的Content-Type,可以修改文件的类型。
- 通过修改文件的Content-Disposition,可以控制文件的下载行为。
获取文件的文件元信息(Object Meta)
您可以使用OssClient::getObjectMeta获取文件的文件元信息:
- <?php
- /**
- * 获取object meta, 也就是getObjectMeta接口
- *
- * @param OssClient $ossClient OssClient实例
- * @param string $bucket 存储空间名称
- * @return null
- */
- function getObjectMeta($ossClient, $bucket)
- {
- $object = "oss-php-sdk-test/upload-test-object-name.txt";
- try {
- $objectMeta = $ossClient->getObjectMeta($bucket, $object);
- } catch (OssException $e) {
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- print(__FUNCTION__ . ": OK" . "\n");
- if (isset($objectMeta[strtolower('Content-Disposition')]) &&
- 'attachment; filename="xxxxxx"' === $objectMeta[strtolower('Content-Disposition')]
- ) {
- print(__FUNCTION__ . ": ObjectMeta checked OK" . "\n");
- } else {
- print(__FUNCTION__ . ": ObjectMeta checked FAILED" . "\n");
- }
- }
设置文件访问权限
Object有四种访问权限:default(默认),private(私有读写), public-read(公共读私有写), public-read-write(公共读写),含义如下:
Object的权限优先级高于Bucket。例如Bucket是private的,而Object ACL是公共读写,则访问这个Object时,先判断Object的ACL,所有用户都拥有这个Object的访问权限,即使这个Bucket是private。如果某个Object从来没设置过ACL,则访问权限遵循Bucket ACL。
您可以使用OssClient::putObjectAcl设置文件的访问权限:
- <?php
- /**
- * 获取文件范围权限
- *
- * @param OssClient $ossClient OssClient实例
- * @param string $bucket 存储空间名称
- * @return null
- */
- function putObjectAcl($ossClient, $bucket)
- {
- $object = "oss-php-sdk-test/upload-test-object-name.txt";
- $acl = "public-read";
- try {
- $ossClient->putObjectAcl($bucket, $object, $acl);
- } catch (OssException $e) {
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- print(__FUNCTION__ . ": OK" . "\n");
- }
获取文件访问权限
您可以使用OssClient::getObjectAcl获取文件的访问权限:
- <?php
- /**
- * 获取object的访问权限
- *
- * @param OssClient $ossClient OssClient实例
- * @param string $bucket 存储空间名称
- * @return null
- */
- function getObjectMeta($ossClient, $bucket)
- {
- $object = "oss-php-sdk-test/upload-test-object-name.txt";
- try {
- $objectAcl = $ossClient->getObjectAcl($bucket, $object);
- } catch (OssException $e) {
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- print(__FUNCTION__ . ": OK" . "\n");
- var_dump($objectAcl);
- }