1

我们一直在使用 AWS 开发工具包上传/抓取文件,结果非常好,但我们遇到了障碍。

S3 中存储了一个文件,看起来像是被转义了。 "/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/ )

4

3 回答 3

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/ )

于 2013-03-25T21:26:56.593 回答
0

你可以试试 html_entity_decode 吗?

$s3->doesObjectExist("mabucket",html_entity_decode("/mefile/412501_413000/412604_-12%20C008%20Fil%20R[1].doc.gpg"))
于 2013-03-21T21:20:54.343 回答
0

密钥/文件名的 urldecode() 对我有用

于 2018-07-16T10:44:45.787 回答