Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS PHP SDK版本2 S3文件名编码问题_Php_Sdk_Amazon Web Services_Amazon S3 - Fatal编程技术网

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

AWS PHP SDK版本2 S3文件名编码问题,php,sdk,amazon-web-services,amazon-s3,Php,Sdk,Amazon Web Services,Amazon S3,我们一直在使用AWS SDK来上传/抓取文件,但遇到了一个障碍 存储在S3中的一个文件看起来像是被转义的。 /mefile/412501_413000/412604_-12%20C008%20Fil%20R[1]。doc.gpg 到目前为止,SDK已经成功地处理了我们抛出的每个损坏的文件名。但当我尝试doesObjectExist时,该文件也失败了 $s3->doesObjectExistmabucket,/mefile/412501\u 413000/412604\u-12%20C008%20

我们一直在使用AWS SDK来上传/抓取文件,但遇到了一个障碍

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

到目前为止,SDK已经成功地处理了我们抛出的每个损坏的文件名。但当我尝试doesObjectExist时,该文件也失败了

$s3->doesObjectExistmabucket,/mefile/412501\u 413000/412604\u-12%20C008%20Fil%20R[1]。doc.gpg

永远都会失败。我尝试过从本地存储上传那个文件,但也失败了。我有一个奇怪的例外: 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法

在使用doesObjectExist之前,是否需要使用任何技巧对文件名进行编码。它似乎已经处理了各种各样的坏文件名spaces/utf-8 chars/&等等,所以我不明白为什么这不起作用

更新:
升级至最新的AWS SDK for PHP 2.2.1。在版本2.1.0上运行,显然有几个bug。如果你使用的是Ubuntu 10.04,这有点粗糙。请参见此处有关PHP版本升级的评论:

您可以尝试使用html\u实体\u解码吗

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

升级至最新的AWS SDK for PHP 2.2.1。在版本2.1.0上运行,显然有几个bug。如果你使用的是Ubuntu 10.04,这有点粗糙。请参见此处有关PHP版本升级的评论:

密钥/文件名的urldecode对我有效

抱歉,没有。我已经尝试过PHP中的每一种解码:html\u entity\u decode,rawurldecode,urldecode。它可能是存储桶位置吗$config=array'key'=>'aws key'、'secret'=>'aws secret'、'region'=>region::US\u EAST\u 1;这是默认的开始,但我给了它一个机会。仍然不起作用。@CarlosCastillo如果您愿意回答,您的评论就是我问题的解决方案: