首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从亚马逊S3下载具有特殊字符的文件

无法从亚马逊S3下载具有特殊字符的文件
EN

Stack Overflow用户
提问于 2017-12-05 08:33:41
回答 3查看 6.7K关注 0票数 27

我一直试图从亚马逊S3下载一个以特殊字符结尾的文件。

由于Base64编码的结果,文件名以"=“结尾。现在我正在尝试下载这个文件,我收到了一个错误,

指定的键不存在。(服务: S3;状态代码: 404;错误代码: NoSuchKey;

我尝试了URL编码字符串。因此,现在"=“变成了"%3D”,而我仍然收到同样的错误。但是,如果我从文件名中删除"=“,我就可以下载该文件,而不会出现问题。但是这是一个常见的文件,它也可以从iOS中访问。

注意:即使文件名中包含"=“,iOS Amazon也能工作。这个问题只有在Android中才会面临。

EN

回答 3

Stack Overflow用户

发布于 2017-12-11 13:12:31

根据AWS文件

安全字符 以下字符集通常在关键字名称中使用是安全的: 字母数字字符0-9a-zA 特殊字符!,-,_,.,*,',(和)

可能需要特殊处理字符 密钥名中的下列字符可能需要额外的代码处理,并且可能需要将URL编码或引用为HEX。其中有些是不可打印的字符,您的浏览器可能无法处理这些字符,这也需要特殊处理: 符号("&") 美元(“美元”) ASCII字符范围为00-1 F十六进制(0-31小数点)和7F (小数点127)。 ‘'At’符号("@") 等于("=") 分号(";") 冒号(":") + ("+") 空间有意义的空间序列可能会在某些用途(特别是多个空间)中丢失。 逗号(",") 问号("?")

因此,它确认"=“需要特殊处理,最好用另一个安全字符替换最后一个"=”字符,以避免问题.

请尝试将"=“改为"=

就像在iOS上一样,没有问题,我希望它可能是相对于安卓环境。

您可能会注意到,某些字符也可能被禁止,因为SH或BASH或ANDROID环境执行时,还请考虑到某些磁盘格式选项(正常的android外部存储卡上的FAT32)也可能是禁止文件名中某些字符的因素。

如果您查看一下这里,尤其是@kreker的答案:

根据wiki,并假设您使用的是具有FAT32的外部数据存储。 目录条目中的允许字符 是 任何字节,除了值0-31,127 (DEL)和:“*/:<>?\+,.;= 小写a-z存储为A-Z

您将注意到,=是android FAT32分区上不允许的字符.

正如我所期望的,Android将考虑=作为受限字符,您可以尝试使用\=来转义它,或者在代码中的文件名中添加引号.

一个有副本的例子:

代码语言:javascript
运行
复制
cp filename=.png mynewfile=.png #before


cp "filename=.png" "mynewfile=.png" #after

"VCS...=.png“

如果这些技巧都不起作用,那么在创建这些文件时,必须更改文件名以删除"=“。

问候

票数 5
EN

Stack Overflow用户

发布于 2017-12-07 19:17:25

密钥名中的下列字符可能需要额外的代码处理,可能需要将其编码或引用为HEX.

其中有些是不可打印的字符,您的浏览器可能无法处理这些字符,这也需要特殊处理:

确保定义关键名称的应用程序之间的兼容性的最佳实践使用:

代码语言:javascript
运行
复制
- Alphanumeric characters [0-9a-zA-Z]
- Special characters !, -, _, ., *, ', (, and )

使用android,您需要对文件名、字符(通常用作操作符)进行编码:

代码语言:javascript
运行
复制
=

致:

代码语言:javascript
运行
复制
%3D
票数 1
EN

Stack Overflow用户

发布于 2022-06-14 22:24:28

首先,我认为您正在使用CopyObjects方法的s3。或者您从s3事件或试图下载的其他地方接收到一个文件名。问题是aws在存储名称时处理特殊字符的方式不同。如果要转到s3控制台并单击文件名的话。您将看到URI将具有不同的值,用于特殊字符(如空格)将被+替换。因此,您需要相应地处理特殊字符。误导性示例不会对您有帮助,因为aws对文件名有限制,但是如果您保存它们,它将用可接受的字符替换它们,并且您的实际文件名将不同于您上传的文件名,因此找不到文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47649185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档