如何使用PHP删除AWS S3上早于x时间的文件
但是,我已经看到,这不适合我,因为我有一个公共(未经验证的标识池)可以上传到我的bucket中。由于这是公开的,我不相信上传者会设置过期时间如何使用PHP删除AWS S3上早于x时间的文件,php,amazon-s3,aws-sdk,Php,Amazon S3,Aws Sdk,但是,我已经看到,这不适合我,因为我有一个公共(未经验证的标识池)可以上传到我的bucket中。由于这是公开的,我不相信上传者会设置过期时间 我已经看到了,但这似乎并不表明对象上有创建、添加、上载或更新的时间。因此,我不确定如何通过对象检查进行集成,如果它们超过x倍,则删除它们。未经授权的用户只能上传他们无法查看/编辑或删除对象,但我不能信任来自他们的任何形式的信息,因此S3是否有某种形式的附加时间,我可以在PHP中访问,如果是这样的话,如何访问?我发现有一个最新更新的时间,它被称为LastMo
我已经看到了,但这似乎并不表明对象上有创建、添加、上载或更新的时间。因此,我不确定如何通过对象检查进行集成,如果它们超过x倍,则删除它们。未经授权的用户只能上传他们无法查看/编辑或删除对象,但我不能信任来自他们的任何形式的信息,因此S3是否有某种形式的附加时间,我可以在PHP中访问,如果是这样的话,如何访问?我发现有一个最新更新的时间,它被称为
LastModified
,我是用PHP找到的
$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"]
));
}
}
$iterator=$this->client->getIterator('ListObjects',array(
“Bucket”=>$bucketName
));
$xtime=STROTIME(“现在-24小时”);
foreach($iterator作为$object){
$uploaded=STROTIME($object[“LastModified”]->date);
如果($上传<$xtime){
$this->client->deleteObject(数组)(
“Bucket”=>$bucketName,
“Key”=>$object[“Key”]
));
}
}
在PHP和bash中都有一个解决方案。如果它没有进入API服务器的生产公共端点,那就太好了。恐怕我无法在公共端点上放置shell命令:)我希望得到一个纯粹的PHP实现端注意:您可以用它在N天后自动删除对象这会对每个文件执行http请求,对吗?这不是批量删除?是的,这就是$This->client->deleteObject
调用在循环中对每个项目执行的操作