使用PHP中的md5验证S3上传是否成功

时间:2016-06-02 10:05:37

标签: php amazon-s3 md5

我正在将文件上传到S3而没有像这样的错误:

    $s3 = new Aws\S3\S3Client([
        "version" => "latest",
        "region" => $region
    ]);

    $result = $s3->putObject([
        "Bucket" => $bucket,
        "Key" => $key,
        "SourceFile" => $image,
        "ACL" => "public-read"
    ]);

我已经阅读过有关Etags和ContentMD5标题但我似乎无法将它们全部放在PHP中。

如何知道文件内容是否正确?

2 个答案:

答案 0 :(得分:1)

使用ContentSHA256密钥工作:

    $sha256 = hash_file("sha256", $image);
    $result = $s3->putObject([
        "Bucket" => getenv("S3_BUCKET_NAME"),
        "Key" => $key,
        "SourceFile" => $image,
        "ACL" => "public-read",
        "ContentSHA256" => $sha256
    ]);

如果SHA不匹配,我会得到一个S3异常,这就是我想要的。

答案 1 :(得分:0)

将文件md5添加到元数据中,例如:

$result = $s3->putObject([
    "Bucket" => $bucket,
    "Key" => $key,
    "image" => $image,
    "ACL" => "public-read",
    "Metadata" => [
        "Content-MD5" => base64_encode($fileMd5)
    ]
]);

请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-metadata

要在PHP中获取md5文件,可以使用md5_file函数