TL;在使用generate_presigned_post
大家好,
我正在使用 Python 和 Boto3 使用以下脚本创建预签名的上传 url:
fields = {
...
"x-amz-meta-u1": "value1",
"x-amz-tagging": "foo=bar"
}
conditions = [
{"acl": "bucket-owner-full-control"},
{"x-amz-meta-u1": "value1"},
{"x-amz-tagging": "foo=bar"},
["content-length-range", 1, 104857600 ]
]
url = s3_client.generate_presigned_post(etl_bucket_name, s3_key, fields, conditions, 3600)
在客户端,我有以下代码:
var xAmzTaggingPair = fields.FirstOrDefault(pair => pair.Key == "x-amz-tagging");
if (xAmzTaggingPair.Key != null)
{
httpClient.DefaultRequestHeaders.Add(xAmzTaggingPair.Key, xAmzTaggingPair.Value);
}
httpClient.BaseAddress = new Uri(signedUrl);
var formContent = new MultipartFormDataContent();
fields.ToList().ForEach(pair => formContent.Add(new StringContent(pair.Value), pair.Key));
formContent.Add(new StreamContent(fs), "file", Path.GetFileName(filePath));
var response = Task.Run(async () => await httpClient.PostAsync(signedUrl, formContent).ConfigureAwait(false));
var responseResult = response.Result;
S3 在上传时不会抛出错误,但是当我在控制台中查看对象时,我没有看到正在设置的标签。我错过了什么?查看控制台时正在设置x-amz-meta-u1
元数据。
任何帮助是极大的赞赏。