使用 iOS SDK 将文件上传到 AWS S3 时空白自定义元数据
Blank custom metadata when uploading file to AWS S3 using iOS SDK
我正在使用 AWSS3TransferUtility
从 iOS 将文件上传到 S3,并尝试在该文件上设置自定义元数据。我正在使用元数据键 X-Amz-Meta-uploadParameters
和值 "Test".
对其进行测试
在请求中正确显示headers:
... &X-Amz-Expires=2999&X-Amz-Meta-uploadParameters=Test&X-Amz-Security-Token= ...
显然发生了一些事情,因为上传后密钥 uploadparameters
确实出现在 S3 控制台的 object 的属性中,但值为空。对于 double-check,我使用了 CLI 中的 s3api --head-object
,这是返回的内容:
{
"AcceptRanges": "bytes",
"LastModified": "Thu, 16 Mar 2017 08:04:41 GMT",
"ContentLength": 1331730,
"ETag": "\"[hex data here]\"",
"ContentType": "image/jpeg",
"Metadata": {
"uploadparameters": ""
}
}
以下是我为 AWSS3TransferUtilityUploadExpression
设置值的方式:
let params = [
"X-Amz-Meta-uploadParameters": "Test"
]
//Copy the custom Meta information into the expression
for (key, value) in params {
expression.setValue(value, forRequestParameter: key)
}
尝试了各种变体后,我仍然离设置实际元数据还差得很远。我在这里错过了什么?
已修复。发布这个问题后,我继续沮丧地调整事情并偶然发现了答案。
将密钥更改为全部小写 是神奇的转折,即 x-amz-meta-uploadparameters
而不是 X-Amz-Meta-uploadParameters
。顺便说一句,它也因 X-Amz-Meta-uploadparameters
而失败。
我正在使用 AWSS3TransferUtility
从 iOS 将文件上传到 S3,并尝试在该文件上设置自定义元数据。我正在使用元数据键 X-Amz-Meta-uploadParameters
和值 "Test".
在请求中正确显示headers:
... &X-Amz-Expires=2999&X-Amz-Meta-uploadParameters=Test&X-Amz-Security-Token= ...
显然发生了一些事情,因为上传后密钥 uploadparameters
确实出现在 S3 控制台的 object 的属性中,但值为空。对于 double-check,我使用了 CLI 中的 s3api --head-object
,这是返回的内容:
{
"AcceptRanges": "bytes",
"LastModified": "Thu, 16 Mar 2017 08:04:41 GMT",
"ContentLength": 1331730,
"ETag": "\"[hex data here]\"",
"ContentType": "image/jpeg",
"Metadata": {
"uploadparameters": ""
}
}
以下是我为 AWSS3TransferUtilityUploadExpression
设置值的方式:
let params = [
"X-Amz-Meta-uploadParameters": "Test"
]
//Copy the custom Meta information into the expression
for (key, value) in params {
expression.setValue(value, forRequestParameter: key)
}
尝试了各种变体后,我仍然离设置实际元数据还差得很远。我在这里错过了什么?
已修复。发布这个问题后,我继续沮丧地调整事情并偶然发现了答案。
将密钥更改为全部小写 是神奇的转折,即 x-amz-meta-uploadparameters
而不是 X-Amz-Meta-uploadParameters
。顺便说一句,它也因 X-Amz-Meta-uploadparameters
而失败。