5 php buckets amazon-s3 amazon-web-services aws-sdk
因此AWS将空格转换+为存储桶/文件 URL。但是其中已有的文件名+被编码为%2B. 我很困惑如何处理这个案子。
当应用程序的输入 URL 为:
https://s3-us-west-2.amazonaws.com/mybucket/Pul0419_32_a+b.zip
Run Code Online (Sandbox Code Playgroud)
我如何确定实际存在的文件是Pul0419_32_a+b.zip还是Pul0419_32_a b.zip
我是 AWS 爱好者,我不得不承认,当 S3 的原始架构师决定将+URL 的路径解释为相当于 ASCII 0x20(“空格”)时,他们犯了一个非常不幸的错误。
该+字符仅在作为查询字符串的一部分时才带有此含义。在路径中,它应该按字面解释。
在正确编码和解释的 URL 的路径中,+相当于%2B.
因此,这个问题没有可靠的答案,因为导致 S3 错误处理正确 URL 的根本缺陷。
鉴于如果示例 URL 被浏览器使用,S3 会假设这些是空格,那么最好不要转换 URL%2B以使用它,而是在与 S3 的交互中按原样使用它,从而最好地满足您的兴趣。 . 除非实践经验表明这些 URL 的原始来源实际上已经与 S3 交互并且确实将它们转换为%2B没有存储它们以供后续使用一致的编码使用,在这种情况下,可以认为它们提供给您是错误的,但是无论如何,您可能必须改造它们,原因可能更多是政治而非技术。
但是,正如您已经怀疑的那样,答案并不简单。
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |