Google Cloud Storage 返回我的公共文件的 NoSuchKey

2023-12-13

我这里有一个公共存储桶: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(使用前将#替换为@)

Google Cloud Storage 返回我的公共文件的 NoSuchKey 的相关文章

随机推荐