如何使用PHP在AWS S3上删除早于x时间的文件

时间:2018-03-30 10:50:47

标签: php amazon-s3 aws-sdk

我见过How to delete or purge old files on S3?但是,这不适合我,因为我有一个允许上传到我的存储桶的公共(Unauthenticated Ident池)。因为这是公开的,我不相信上传者设置到期日,

我见过https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listobjects,但这似乎并未表明对象上有创建,添加,上传或更新的时间。所以我不确定如何通过对象检查它是否可以超过x时间,然后删除它们。 unauthed用户只能上传他们无法查看/编辑或删除对象,但我不能相信他们的任何形式的信息,所以S3有一些我可以用PHP访问的形式的额外时间,如果是这样的话?

1 个答案:

答案 0 :(得分:1)

我发现有一个LastUpdated时间叫做LastModified我发现了

$iterator = $this->client->getIterator('ListObjects', array(
    'Bucket' => $bucketName
));
foreach($iterator as $object){
    var_dump($object); die();
}

这意味着我可以执行以下代码来评估上传和现在之间的时间,对于此示例,我将x设置为24小时前。

$iterator = $this->client->getIterator('ListObjects', array(
    'Bucket' => $bucketName
));
$xtime = strtotime("now -24 hours");
foreach($iterator as $object){
    $uploaded = strtotime($object["LastModified"]->date);
    if($uploaded < $xtime){
        $this->client->deleteObject(array(
            "Bucket"        => $bucketName,
            "Key"           => $object["Key"]
        ));
    }
}