java - s3 : streaming file(s) with embedded ':' in title

标签 java amazon-s3 amazon-sqs

由于各种历史原因,我在 s3 上看到了一系列文件,这些文件的标题中的时间表示为“HH:MM:SS”(以及其他字符)。文件名以及不包含这些字符的其他文件是通过 SQS 发送给我的。

我可以读取包含“:”字符的文件,但对于那些包含“:”字符的文件却没有成功。我尝试了各种 UUEncode/Decode 过程,但一切都给了我这个错误:

Caught an AmazonServiceException, which means your request made it to Amazon S3, 
but was rejected with an error response for some reason.

Error Message: The specified key does not exist. 
(Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey;

我想知道是否有某种方法可以对 key 进行编码,以便可以访问文件。

最佳答案

文档表明冒号字符属于可能需要特殊处理的字符(请参阅 docs ):

The following characters in a key name may require additional code handling and will likely need to be URL encoded or referenced as HEX.

根据this list ,冒号字符的十六进制值为 %3A

换句话说,当您指定 key 时,将“:”字符替换为“%3A”,它应该可以正常工作。

关于java - s3 : streaming file(s) with embedded ':' in title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38206788/

相关文章:

typescript - 如何使用 aws cdk 将 SQS 队列订阅到 SNS 主题?

c# - aws lambda 函数出错时如何保留 AWS SQS 消息

java - Shell脚本java程序不能正确写入文件

java - 如果 Ajax 不返回任何元素,Selenium Ajax 会等待吗?

python - AWS S3 + Django : Files stored in S3 accesible by user

amazon-web-services - 在 S3 名称中包含 AWS 账户 ID 是否存在安全问题?

amazon-web-services - 您尝试访问的存储桶必须使用指定的端点进行寻址,同时从 jenkins 上传到 s3

java - 如何使用 spring 集成来调整 sqs 队列的消耗

java - android firebase 如何检查推送节点中是否存在值

java - 当 Long 不够长时我该怎么办(Java)?