gpt4 book ai didi

google-app-engine - 谷歌云存储为我的公共(public)文件返回 NoSuchKey

转载 作者:行者123 更新时间:2023-12-04 04:41:20 27 4
gpt4 key购买 nike

我在这里有一个公共(public)存储桶:
http://storage.googleapis.com/tripket1/

此存储桶中的所有文件都将 ACL 设置为“public-read”。然而,当我尝试查看任何文件时,例如:

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在服务器端解码时,您的对象名称会变成一个空格( ),并且找不到其中包含空格的对象名称。

关于google-app-engine - 谷歌云存储为我的公共(public)文件返回 NoSuchKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com