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

Jon*_*han 3 metadata amazon-s3 amazon-web-services ios aws-sdk

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

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

... &X-Amz-Expires=2999&X-Amz-Meta-uploadParameters=Test&X-Amz-Security-Token= ...
Run Code Online (Sandbox Code Playgroud)

显然正在发生某些事情,因为密钥uploadparameters在S3控制台中的确出现在对象的属性中,但是具有空白值。要仔细检查我s3api --head-object在CLI中使用的内容,返回的内容如下:

{
    "AcceptRanges": "bytes",
    "LastModified": "Thu, 16 Mar 2017 08:04:41 GMT",
    "ContentLength": 1331730,
    "ETag": "\"[hex data here]\"",
    "ContentType": "image/jpeg",
    "Metadata": {
        "uploadparameters": ""
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我如何设置的值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)
        }
Run Code Online (Sandbox Code Playgroud)

经历了各种各样的变化之后,我仍然离设置实际的元数据还很近。我在这里想念什么?

Jon*_*han 5

固定。发布此问题后,我继续沮丧地进行调整,并偶然发现了答案。

将键更改为所有小写是魔术,即x-amz-meta-uploadparameters而不是X-Amz-Meta-uploadParameters。顺便说一句,它也会失败X-Amz-Meta-uploadparameters