为使用预签名帖子上传的文件添加自动校验和

问题描述 投票:0回答:1

我使用以下代码来生成帖子网址:

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 作为上传条件,我只是希望它作为上传内容的附加元数据。

amazon-s3 boto3 pre-signed-url
1个回答
0
投票
显然它默默地不受支持。来自 aws 文档:

目前,Amazon S3 预签名 URL 不支持使用以下内容 数据完整性校验和算法(CRC32、CRC32C、SHA-1、SHA-256) 当您上传对象时。之后验证对象的完整性 上传时,您可以在上传时提供对象的 MD5 摘要 它带有预先指定的 URL。

https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html

© www.soinside.com 2019 - 2024. All rights reserved.