我使用以下代码来生成帖子网址:
import boto3
client = boto3.client("s3", config=...)
presigned_post = client.generate_presigned_post(
Bucket="my_bucket",
Key="my_key",
Fields={"x-amz-checksum-algorithm": "SHA1"},
Conditions=[ # type: ignore
{"x-amz-checksum-algorithm": "SHA1"},
],
)
然后我使用例如网络客户端上传到此网址:
const formData = new FormData()
const fields = uploadInfo.fields
Object.keys(fields).forEach((field) => {
formData.append(field, get(fields, field))
})
formData.append('file', contents)
await fetch(uploadInfo.url, {method: "POST", body: formData})
但是上传的文件的属性中没有校验和。当我在 s3 控制台或任何 api 请求中查看它时都不会。
是否可以计算校验和?我确实看到
etag
已计算出来,但那是一个 md5 校验和,而我需要 sha1。
aws 的文档表明这是可能的,但唯一的示例是在没有预先签名的情况下进行 post/put。
此外,我不需要 sha1 作为上传条件,我只是希望它作为上传内容的附加元数据。