我这里有一个公共存储桶:http://storage.googleapis.com/tripket1/
此存储桶中的所有文件的 ACL 都设置为“公共读取”。然而,当我尝试查看任何文件时,例如:
http://storage.googleapis.com/tripket1/2013-05-25%2019.17.32_150.jpg
它返回“NoSuchKey”错误。
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
</Error>
什么可能导致这个问题?这些文件是使用 Java 的 GCS 客户端库上传的。这是从上传者那里截取的代码:
GcsFilename thumbGcsFilename = new GcsFilename(bucketName, thumb_filename);
GcsFileOptions options = new GcsFileOptions.Builder().mimeType("image/" + photo_extension).acl("public-read").build();
GcsOutputChannel outputChannel = gcsService.createOrReplace(thumbGcsFilename, options);
outputChannel.write(ByteBuffer.wrap(newImageData));
outputChannel.close();
LOGGER.info("Wrote file");
String thumb_url_str = String.format("http://storage.googleapis.com/%s/%s", bucketName, thumb_filename);
return thumb_url_str;
你需要逃离%
对象名称中的字符。
例如,您有以下对象:
gs://tripket1/2013-05-25%2019.17.32_150.jpg
由于对象名称中有一个百分号,因此必须将其转义为%25
当 URL 编码时,您可以使用以下 URL 访问对象:
http://storage.googleapis.com/tripket1/2013-05-25%252019.17.32_150.jpg
如果你不逃避它,%20
你的对象名称中的内容变成了空格(
)在服务器端解码时,没有找到带有空格的对象名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)