我见过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访问的形式的额外时间,如果是这样的话?
答案 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"]
));
}
}