使用iOS SDK将文件上载到AWS S3时为空自定义元数据

使用iOS SDK将文件上载到AWS S3时为空自定义元数据,ios,amazon-web-services,amazon-s3,metadata,aws-sdk,Ios,Amazon Web Services,Amazon S3,Metadata,Aws Sdk,我正在使用AWSS3TransferUtility将一个文件从iOS上传到S3,并尝试在该文件上设置自定义元数据。我正在使用元数据键X-Amz-Meta-uploadParameters和值“Test”测试它 它正确显示在请求标题中: ... &X-Amz-Expires=2999&X-Amz-Meta-uploadParameters=Test&X-Amz-Security-Token= ... 显然发生了一些事情,因为在上传之后,键uploadparameters确

我正在使用
AWSS3TransferUtility
将一个文件从iOS上传到S3,并尝试在该文件上设置自定义元数据。我正在使用元数据键
X-Amz-Meta-uploadParameters
和值“Test”测试它

它正确显示在请求标题中:

... &X-Amz-Expires=2999&X-Amz-Meta-uploadParameters=Test&X-Amz-Security-Token= ...
显然发生了一些事情,因为在上传之后,键
uploadparameters
确实出现在S3控制台中的对象属性中,但值为空。为了再次检查,我使用了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": ""
    }
}
下面是我如何设置
AWSS3TransferuilityUploadExpression
的值:

        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
而失败

这闻起来很像一只虫子。这是有记录的。它必须是小写的