您可以根据需要删除单个文件(Object)、删除指定的多个文件、删除指定前缀的文件或者删除指定目录及目录下的所有文件。
警告 请您谨慎使用删除操作,文件删除后将无法恢复。
删除单个文件
以下代码用于删除examplebucket中的exampleobject.txt文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php if (is_file(__DIR__ . '/../autoload.php' )) { require_once __DIR__ . '/../autoload.php' ; } if (is_file(__DIR__ . '/../vendor/autoload.php' )) { require_once __DIR__ . '/../vendor/autoload.php' ; } use OSS\OssClient; use OSS\Core\OssException; // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 $accessKeyId = "<var class=" keyword varname " id=" varname-soy-dty-e89 ">yourAccessKeyId</var>" ; $accessKeySecret = "<var class=" keyword varname " id=" varname-4fq-lav-mxf ">yourAccessKeySecret</var>" ; // <var class="keyword varname" id="varname-q2s-tyu-qvv">yourEndpoint</var>填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 $endpoint = "<var class=" keyword varname " id=" varname-ded-kwj-lhk ">yourEndpoint</var>" ; // 填写Bucket名称,例如examplebucket。 $bucket = "examplebucket" ; // 填写文件完整路径,例如exampledir/exampleobject.txt。文档完整路径中不能包含Bucket名称。 $object = "exampledir/exampleobject.txt" ; try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); $ossClient->deleteObject($bucket, $object); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n" ); printf($e->getMessage() . "\n" ); return ; } print(__FUNCTION__ . "OK" . "\n" ); |
批量删除文件
批量删除文件时,每次最多删除1000个文件。您可以删除指定的多个文件、删除指定前缀的文件或者删除指定目录及目录下的所有文件。
OSS还支持通过设置生命周期规则来自动删除文件。更多信息,请参见开发指南中的生命周期规则介绍。
- 删除指定的多个文件
以下代码用于删除examplebucket中指定的多个文件。
12345678910111213141516171819202122232425262728293031323334353637<?php
if
(is_file(__DIR__ .
'/../autoload.php'
)) {
require_once __DIR__ .
'/../autoload.php'
;
}
if
(is_file(__DIR__ .
'/../vendor/autoload.php'
)) {
require_once __DIR__ .
'/../vendor/autoload.php'
;
}
use OSS\OssClient;
use OSS\Core\OssException;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
$accessKeyId =
"<var class="
keyword varname
" id="
varname-mbx-3h8-4j1
">yourAccessKeyId</var>"
;
$accessKeySecret =
"<var class="
keyword varname
" id="
varname-ir8-t4h-55u
">yourAccessKeySecret</var>"
;
// <var class="keyword varname" id="varname-ipi-3tm-mok">yourEndpoint</var>填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
$endpoint =
"<var class="
keyword varname
" id="
varname-wm7-x8x-k9u
">yourEndpoint</var>"
;
// 填写Bucket名称,例如examplebucket。
$bucket =
"examplebucket"
;
try
{
$ossClient =
new
OssClient($accessKeyId, $accessKeySecret, $endpoint,
false
);
// 填写需要删除的多个文件完整路径。文件完整路径中不能包含Bucket名称。
$objects = array();
$objects[] =
"exampleobjecta.txt"
;
$objects[] =
"exampledir/sampleobject.txt"
;
$result = $ossClient->deleteObjects($bucket, $objects);
foreach ($result as $info){
$obj = strval($info);
printf(
"Delete "
.$obj.
" : Success"
.
"\n"
);
}
printf(
"Delete Objects : OK"
.
"\n"
);
}
catch
(OssException $e) {
printf(
"Delete Objects : Failed"
.
"\n"
);
printf($e->getMessage() .
"\n"
);
return
;
}
- 删除指定前缀(prefix)的文件
以下代码用于删除examplebucket中以file为前缀的文件。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
<?php
if
(is_file(__DIR__ .
'/../autoload.php'
)) {
require_once __DIR__ .
'/../autoload.php'
;
}
if
(is_file(__DIR__ .
'/../vendor/autoload.php'
)) {
require_once __DIR__ .
'/../vendor/autoload.php'
;
}
use OSS\OssClient;
use OSS\Core\OssException;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
$accessKeyId =
"<var class="
keyword varname
" id="
varname-5ib-bg0-cx4
">yourAccessKeyId</var>"
;
$accessKeySecret =
"<var class="
keyword varname
" id="
varname-x7p-vkn-iqi
">yourAccessKeySecret</var>"
;
// <var class="keyword varname" id="varname-9iy-2om-sh8">yourEndpoint</var>填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
$endpoint =
"<var class="
keyword varname
" id="
varname-t2e-alk-2mt
">yourEndpoint</var>"
;
// 填写Bucket名称,例如examplebucket。
$bucket =
"examplebucket"
;
try
{
$ossClient =
new
OssClient($accessKeyId, $accessKeySecret, $endpoint,
false
);
$option = array(
OssClient::OSS_MARKER =>
null
,
OssClient::OSS_PREFIX =>
"file"
,
);
$bool =
true
;
while
($bool){
$result = $ossClient->listObjects($bucket,$option);
$objects = array();
if
(count($result->getObjectList()) >
0
){
foreach ($result->getObjectList() as $key => $info){
printf(
"key name:"
.$info->getKey().PHP_EOL);
$objects[] = $info->getKey();
}
$delObjects = $ossClient->deleteObjects($bucket, $objects);
foreach ($delObjects as $info){
$obj = strval($info);
printf(
"Delete "
.$obj.
" : Success"
. PHP_EOL);
}
}
if
($result->getIsTruncated() ===
'true'
){
$option[OssClient::OSS_MARKER] = $result->getNextMarker();
}
else
{
$bool =
false
;
}
}
printf(
"Delete Objects : OK"
. PHP_EOL);
}
catch
(OssException $e) {
printf(
"Delete Objects : Failed"
. PHP_EOL);
printf($e->getMessage() . PHP_EOL);
return
;
}
- 删除指定目录及目录下的所有文件
以下代码用于删除examplebucket中exampledir目录及目录下的所有文件。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
<?php
if
(is_file(__DIR__ .
'/../autoload.php'
)) {
require_once __DIR__ .
'/../autoload.php'
;
}
if
(is_file(__DIR__ .
'/../vendor/autoload.php'
)) {
require_once __DIR__ .
'/../vendor/autoload.php'
;
}
use OSS\OssClient;
use OSS\Core\OssException;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
$accessKeyId =
"<var class="
keyword varname
" id="
varname-qkf-
059
-rtu
">yourAccessKeyId</var>"
;
$accessKeySecret =
"<var class="
keyword varname
" id="
varname-xm1-11i-4pg
">yourAccessKeySecret</var>"
;
// <var class="keyword varname" id="varname-lc6-lw7-ita">yourEndpoint</var>填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
$endpoint =
"<var class="
keyword varname
" id="
varname-d1f-2zk-3pv
">yourEndpoint</var>"
;
// 填写Bucket名称,例如examplebucket。
$bucket =
"examplebucket"
;
try
{
$ossClient =
new
OssClient($accessKeyId, $accessKeySecret, $endpoint,
false
);
$option = array(
OssClient::OSS_MARKER =>
null
,
OssClient::OSS_PREFIX =>
"exampledir/"
,
);
$bool =
true
;
while
($bool){
$result = $ossClient->listObjects($bucket,$option);
$objects = array();
if
(count($result->getObjectList()) >
0
){
foreach ($result->getObjectList() as $key => $info){
printf(
"key name:"
.$info->getKey().PHP_EOL);
$objects[] = $info->getKey();
}
$delObjects = $ossClient->deleteObjects($bucket, $objects);
foreach ($delObjects as $info){
$obj = strval($info);
printf(
"Delete "
.$obj.
" : Success"
. PHP_EOL);
}
}
if
($result->getIsTruncated() ===
'true'
){
$option[OssClient::OSS_MARKER] = $result->getNextMarker();
}
else
{
$bool =
false
;
}
}
printf(
"Delete Objects : OK"
. PHP_EOL);
}
catch
(OssException $e) {
printf(
"Delete Objects : Failed"
. PHP_EOL);
printf($e->getMessage() . PHP_EOL);
return
;
}
说明 如果使用try{}catch{}获取错误时抛出Exception,则表示没有成功删除单个或多个文件。此时您还可以根据$e->getMessage来分析错误原因。