使用 PHP 查看 S3 中是否存在对象

2022-08-30 11:01:05

我正在使用 PHP,并且我正在使用 S3 API 上传文件,但我想确保在上传之前存储桶中不存在此确切的文件名。

我在网上找到了一些使用“file_get_contents”的例子,但这是否意味着您必须首先下载整个文件?通常,这些文件大约是10 mb,所以理想情况下,我真的不想这样做。

有没有一种方法可以在不下载文件的情况下使用“file_get_contents”?

或者更好的是,也许我可以使用API请求来查看文件名是否存在?

对我来说,内容或文件大小是否相同并不重要,只是文件名。


答案 1

获取指定的存储桶中是否存在指定的 Amazon S3 对象。

AmazonS3 doObjectExist

$s3 = new AmazonS3();
$bucket = 'my-bucket' . strtolower($s3->key);

$response = $s3->doesObjectExist($bucket, 'test1.txt');

// Success? (Boolean, not a CFResponse object)
var_dump($response);

答案 2

尝试使用以下代码:

$s3 = new S3();

$info = $s3->getObjectInfo($bucket, $filename);
if ($info)
{
    echo 'File exists';
}
else
{
    echo 'File does not exists';
}

从亚马逊下载适用于 php 的 S3 SDK。有一个名为S3的类;创建 S3 的对象。该对象将允许调用 getObjectInfo() 方法。传递您的 S3 存储桶名称和文件名 (通常文件名称为键)。如果文件存在,getObjectInfo() 方法将返回一些信息,否则该方法将返回 FALSE。


推荐