ImagesService.getServingUrl因IllegalArgumentException而失败,并且没有针对云存储对象的错误消息

时间:2013-06-18 05:04:47

标签: google-app-engine

以下是代码:

public static String getNotFoundUrl(int size) {
  try {
    BlobKey blob_key = BLOB_STORE.createGsBlobKey("/gs/web_content/placeholder_img.png");

    // Simple Test to make sure blob_key points at the right thing.
    byte[] image_data = BLOB_STORE.fetchData(blob_key, 0, 100);
    Application.getLogger().warning(new String(image_data));
    // This parts works and gets the first 100 bytes.

    ServingUrlOptions opts = ServingUrlOptions.Builder.withBlobKey(blob_key);
    if(size > 0) opts.imageSize(size);
    return IMAGES_SERVICE.getServingUrl(opts);
  } catch(IllegalArgumentException e) {
    Application.getLogger().warning("Unable to serve placeholder image from Cloud Storage.");
    Application.getLogger().warning(e.getMessage());
    Application.logException(e);
    return "/placeholder_img.png";
  }
}

我也尝试过使用

ServingUrlOptions.Builder.withGoogleStorageFileName

并得到了相同的结果。

在我看来,blob_key绝对有效,因为我可以使用

BlobstoreService.fetchData  

读取前100个字节并且它没有抛出异常并且正在成功读取数据。

唯一与此不同的是,我试图访问的文件是通过云控制台Web UI而不是通过AppEngine SDK上传的。

1 个答案:

答案 0 :(得分:0)

问题是权限。确保您的应用程序具有您尝试访问的云存储项目的权限。