我正在将文件上传到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中。
如何知道文件内容是否正确?
答案 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函数