0

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元数据。

任何帮助是极大的赞赏。

4

0 回答 0