我们一直在使用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/)
答案 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()对我有用