Php 带有特殊字符的Amazon S3对象抛出错误?

Php 带有特殊字符的Amazon S3对象抛出错误?,php,amazon-s3,Php,Amazon S3,我正在使用用于存储和检索对象。如果对象包含正常名称,但没有特殊字符,则可以正常工作。但如果对象包含[]字符(如[test].jpg,我仅为此进行了测试),并且如果使用getobject方法,则会抛出错误NoSuchakey 如果我直接获得S3URL并粘贴到浏览器中,我可以下载图像 但是我想使用getobject方法。所以如何避免这个错误。我不想更改原始对象名 编辑: PHP 5.2.6版我在PHP.net上的评论中看到了以下注释: phpversion()>=5.3将符合RFC 3986,而 p

我正在使用用于存储和检索对象。如果对象包含正常名称,但没有特殊字符,则可以正常工作。但如果对象包含[]字符(如[test].jpg,我仅为此进行了测试),并且如果使用getobject方法,则会抛出错误NoSuchakey

如果我直接获得S3URL并粘贴到浏览器中,我可以下载图像

但是我想使用getobject方法。所以如何避免这个错误。我不想更改原始对象名

编辑:


PHP 5.2.6版

我在PHP.net上的评论中看到了以下注释:

phpversion()>=5.3将符合RFC 3986,而
phpversion()我在php.net上的注释中看到了这一注释:

phpversion()>=5.3将符合RFC 3986,而
phpversion()你忘了应用吗?$rest=new S3Request('GET',$bucket,$uri)在这里我需要应用URL编码?nvm,它已经为你用
rawurlencode($uri)
你忘了应用吗?$rest=new S3Request('GET',$bucket,$uri)在这里我需要应用URL编码?nvm,它已经用
rawurlencode($uri)
为您完成了这项工作。谢谢steve-0。它不工作。我的PHP版本是5.2.6谢谢steve-0。它不工作。我的PHP版本是5.2.6
<? echo rawurlencode ("[hello]") . "\n\n"; ?>
%5Bhello%5D
$this->uri = $uri !== '' ? '/'.str_replace('%2F', '/', rawurlencode($uri)) : '/';
$this->url = str_replace("%5B", "[", $this->url);
$this->url = str_replace("%5D", "]", $this->url);