AWS PHP SDK第2版S3文件名编码问题

时间:2013-03-21 21:16:09

标签: php sdk amazon-web-services amazon-s3

我们一直在使用AWS SDK,上传/抓取文件效果非常好,但我们遇到了障碍。

S3中存储的文件看起来像是urlescaped。 "/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg"

到目前为止,SDK已经设法处理我们抛出的每个受损的文件名。但是,当我尝试“doesObjectExist”时,我的文件也会失败。

$s3->doesObjectExist("mabucket","/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg")

永远都会失败。我已经尝试从本地存储上传该文件,但也失败了。我得到一个时髦的例外: “我们计算的请求签名与您提供的签名不符。请检查您的密钥和签名方法。”

在使用“doesObjectExist”之前,我是否需要使用任何技巧对文件名进行编码。它似乎已经处理了各种不好的文件名(空格/ utf-8字符/&等等),所以我很困惑为什么这不起作用。

更新 升级到最新的适用于PHP 2.2.1的AWS开发工具包。在版本2.1.0上运行,显然有几个错误。如果您使用的是Ubuntu 10.04,这有点粗糙。 (请参阅此处有关PHP版本升级的评论:http://www.zalexblog.com/2011/01/07/installing-php-5-3-3-on-ubuntu-10-04/

3 个答案:

答案 0 :(得分:0)

您可以尝试使用html_entity_decode吗?

$s3->doesObjectExist("mabucket",html_entity_decode("/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg"))

答案 1 :(得分:0)

升级到最新的适用于PHP 2.2.1的AWS开发工具包。在版本2.1.0上运行,显然有几个错误。如果您使用的是Ubuntu 10.04,这有点粗糙。 (请参阅此处有关PHP版本升级的评论:http://www.zalexblog.com/2011/01/07/installing-php-5-3-3-on-ubuntu-10-04/

答案 2 :(得分:0)

密钥/文件名的

urldecode()对我有用