特殊字符是上传文件的{3}个密钥名称

时间:2018-01-13 15:13:19

标签: android amazon-web-services amazon-s3

背景

我正在使用aws-android-sdk将文件从Android应用程序发送到S3。 文件名包含特殊字符,例如=

为此,我使用this guide中解释的TransferUtility.upload(...)

问题

传递包含=等特殊字符的密钥时,密钥正在进行URL编码。

例如,关键:

year=2018/month=1/versions=1,2/my_file.txt

变为:

year%253D2018/month%253D1/versions%253D1%252C2/my_file.txt

我的问题

如何在我的Android应用程序中上传S3文件,同时在其中使用特殊字符?

2 个答案:

答案 0 :(得分:0)

问题是您没有遵循本段中描述的名为{3}}的Amazon S3的密钥名称约定。

链接摘要:

  

以下字符集通常可以安全地用于密钥名称:

Alphanumeric characters [0-9a-zA-Z]
Special characters !, -, _, ., *, ', (, and )

以下是有效对象键名称的示例:

4my-organization
my.great_photos-2014/jan/myvacation.jpg
videos/2014/birthday/video1.wmv

从指南后面的URL中删除这些特殊字符,问题将消失

答案 1 :(得分:0)

如果要在S3上对数据进行分区,通常的做法是在S3键中使用=号。还值得注意的是,适用于iOS的AWS开发工具包不会自动编码S3密钥。