使用PHP删除Amazon S3中的文件夹

Nyx*_*nyx 7 php codeigniter amazon-s3

我刚开始尝试使用Amazon S3来托管我的网站图像.我正在使用官方的Amazon AWS PHP SDK库.

问题:如何删除S3'文件夹中的所有文件?例如,如果我有一个名为images/2012/photo.jpgimages/2012 /` 的文件.谢谢!

Lui*_* C. 18

从S3删除文件夹及其所有文件的最佳方法是使用API deleteMatchingObjects()

$s3 = S3Client::factory(...);
$s3->deleteMatchingObjects('YOUR_BUCKET_NAME', '/some/dir');
Run Code Online (Sandbox Code Playgroud)

  • 请注意一件事.如果在"some"目录中有一个名为dirXXX.jpg的文件,它也将删除该文件.所以这是不正确的.你必须添加一个正则表达式.$ s3-> deleteMatchingObjects('YOUR_BUCKET_NAME','/ some/dir','/ ^ some\/ dir\//'); (2认同)

nat*_*ood 10

S3没有像传统上在文件系统中想到的那样"文件夹"(有些S3客户端只是做得很好,使S3 看起来有文件夹).这些/实际上是文件名的一部分.

因此,API中没有"删除文件夹"选项.您只需删除具有images/2012/...前缀的每个单独文件.

更新:

这可以通过delete_all_objectsAmazon S3 PHP Client中的方法完成.只需"/^images\/2012\//"在第二个参数中指定正则表达式前缀(第一个参数是您的存储桶名称).