0

コードは次のとおりです。

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 バイトを読み取ると、例外がスローされず、データが正常に読み取られます。

これが他の状況と異なる唯一の点は、アクセスしようとしているファイルが、AppEngine SDK ではなく、Cloud Console Web UI を介してアップロードされたことです。

4

1 に答える 1

0

問題は権限でした。アクセスしようとしているクラウド ストレージ プロジェクトへのアクセス許可がアプリケーションにあることを確認してください。

于 2013-06-18T14:29:19.147 に答える