使用java从Google云存储检索图像时的\u BLOB\u键无效

使用java从Google云存储检索图像时的\u BLOB\u键无效,java,google-app-engine,google-cloud-storage,Java,Google App Engine,Google Cloud Storage,我正在尝试使用谷歌云存储来存储我将在jsp文件中使用的图像。我已经创建了bucket,上传了一个图像(用于测试目的),并尝试从java类中检索指向它的Url。我一直收到错误信息 HTTP ERROR 500 Problem accessing /. Reason: INVALID_BLOB_KEY: Could not read blob. Caused by: java.lang.IllegalArgumentException: INVALID_BLOB_KEY: Could

我正在尝试使用谷歌云存储来存储我将在jsp文件中使用的图像。我已经创建了bucket,上传了一个图像(用于测试目的),并尝试从java类中检索指向它的Url。我一直收到错误信息

    HTTP ERROR 500

Problem accessing /. Reason:

INVALID_BLOB_KEY: Could not read blob.
Caused by:

java.lang.IllegalArgumentException: INVALID_BLOB_KEY: Could not read blob.
at 
com.google.appengine.api.images.ImagesServiceImpl.getServingUrl(ImagesServiceImpl.java:282)
我创造的水桶

我用来检索Url的代码(BUCKETNAME是一个带有bucket名称的静态字符串)


我曾试图公开这张照片,但没用。我已经看过了各种各样的答案,但我有点迷路了。任何帮助都将不胜感激

我也面临同样的问题。对于未来的人,确保你已经做好了准备 公众。通过相同的方法,您还可以生成图像的缩略图和安全URL

public static String getImageURL(String inFilename) {
    String key = "/gs/" + BUCKETNAME + "/" + inFilename;
    ImagesService imagesService = ImagesServiceFactory.getImagesService();
    ServingUrlOptions options = ServingUrlOptions.Builder  
           .withGoogleStorageFileName(key).imageSize(150).secureUrl(true);
    String servingUrl = imagesService.getServingUrl(options);

    return servingUrl;
}

我也遇到同样的问题。我使用Firebase存储来保存图像。你找到解决办法了吗?你也用过Firebase吗?当使用withGoogleStorageFileName()而不是BlobKey()时,它需要BlobKey,这似乎很奇怪。我使用了Google App Engine和java来实现这一点。我正在调查Firebase未来的项目。如果我看一下我最终得到的代码,我走的是另一条路:公共静态字符串getImageURL(字符串inFolder,字符串inFilename){String servingUrl=PATHNAME+BUCKETPATH+inFolder+inFilename;return servingUrl;}我还记得在本地主机上使用它时遇到了一些问题。您需要进行一些设置才能从LocalHost开始工作谢谢。过了一会儿,我意识到只有在本地运行时才出现错误,所以在没有本地调试的情况下解决了这个问题。
public static String getImageURL(String inFilename) {
    String key = "/gs/" + BUCKETNAME + "/" + inFilename;
    ImagesService imagesService = ImagesServiceFactory.getImagesService();
    ServingUrlOptions options = ServingUrlOptions.Builder  
           .withGoogleStorageFileName(key).imageSize(150).secureUrl(true);
    String servingUrl = imagesService.getServingUrl(options);

    return servingUrl;
}