首页 > 解决方案 > AWS PHP SDK v3 检查文件是否已存在于 S3 存储桶中

问题描述

我正在使用 PHP 和 AWS SDK v3 开发一个项目,在该项目中我必须通过传递文件名来检查文件是否已经存在。

这是我尝试过的:

HTML 模板:

<html>
    <form id="form" action="check_existing.php" method="post">
        <input type="text" name="fName" >
        <input type="submit" name="submit" value="Submit"><br />
    </form>
</html>

来自check_existing.php:

include 'create_client.php';
if(isset($_POST["submit"])){            
    $filename = $_POST['fName'];
    $info = $s3->doesObjectExist($bucketName, $filename);
    print($info);
    if ($info)
    {
        echo 'File exists';
    }
    else
    {
    echo 'File does not exists';
    }
}

这是我创建s3客户端的方式:

$s3 = new Aws\S3\S3Client([
    'region' => $region,
    'version' => 'latest',
    'credentials' => [
        'key'    => $IAM_KEY,
        'secret' => $IAM_SECRET,
    ],
]);

问题: 它总是返回File does not exists

标签: phpamazon-web-servicesamazon-s3aws-php-sdk

解决方案


$s3 = new S3($s3_accesskey, $s3_secretkey); //create s3 object

$info = $s3->getObjectInfo($s3_bucket, $filename); // $filename can be path of file in bucket
if ($info){
    echo 'File exists';
}else{
    echo 'File does not exists';
}

getObjectInfo() 返回信息如下

Array
(
[date] => 1596690179
[time] => 1596651169
[hash] => 1234c1234341a7f2565c108b23b4aaca
[type] => image/jpeg
[size] => 18968
)

推荐阅读