Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.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
Java AmazonS3RESTAPI-路径中有空间的资源_Java_Rest_Amazon Web Services_Amazon S3 - Fatal编程技术网

Java AmazonS3RESTAPI-路径中有空间的资源

Java AmazonS3RESTAPI-路径中有空间的资源,java,rest,amazon-web-services,amazon-s3,Java,Rest,Amazon Web Services,Amazon S3,对于名称(路径)中包含空格的AmazonS3资源,正确的处理方法是什么 我使用了文章中链接的代码示例中的说明,当我获得一个路径不包含空格的资源时,它们可以正常工作,例如:https://s3.eu-central-1.amazonaws.com/my_bucket/Folder01/name_WITHOUT_spaces.txt。 但是,完全相同的代码不适用于路径中有空格的资源,例如:https://s3.eu-central-1.amazonaws.com/my_bucket/Foo+1/na

对于名称(路径)中包含空格的AmazonS3资源,正确的处理方法是什么

我使用了文章中链接的代码示例中的说明,当我获得一个路径不包含空格的资源时,它们可以正常工作,例如:
https://s3.eu-central-1.amazonaws.com/my_bucket/Folder01/name_WITHOUT_spaces.txt
。 但是,完全相同的代码不适用于路径中有空格的资源,例如:
https://s3.eu-central-1.amazonaws.com/my_bucket/Foo+1/name+with+space.txt

我尝试了几种有/没有逃逸空格字符的方法

  • “Foo 1/name with space.txt”:签名生成器将空格转义到“+”,构建类似于
    Foo+1/name+with+space.txt的内容,然后我得到响应:
HttpVersionNotSupported
不支持指定的HTTP版本

  • “Foo+1/name+with+space.txt”:签名生成器将转义“+”字符生成,例如
    Foo%2B1/name%2Bwith%2Bspace.txt
  • “Foo%201/name%20with%20space.txt”:签名生成器再次转义“%”字符,生成类似于
    Foo%25201/name%2520with%2520space.txt的内容
在最后两种情况下,我都得到了回应:

SignatureDesNotMatch
我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法

我做错了什么? 我应该如何处理/转义空格字符

谢谢。

如果你在谷歌上搜索“aws s3 key with spaces”,你会发现很多人对s3和spaces感到失望。我不知道你的答案是否在那些搜索结果中。我们的解决方案是不使用空格(但显然,这可能不适合您)。