我正在使用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文件,同时在其中使用特殊字符?
答案 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密钥。