2013-11-01 44 views
2

叫不工作時,我有以下問題:ImagesService.getServingUrl()從不同的谷歌App Engine應用程序

1)我滴的圖像與在桶中的雲存儲控制檯。
2)從一個應用程序引擎應用程序,我getServingUrl,我收到一個圖像的工作網址。
使用的代碼:

ImagesServiceFactory.getImagesService().getServingUrl(ServingUrlOptions.Builder.withGoogleStorageFileName(cloudStoragePath).secureUrl(true)); 

到目前爲止好。
3)從其他App Engine應用程序我也做getServingUrl在同一圖像上,現在我得到:

com.google.appengine.api.images.ImagesServiceFailureException: 
    at com.google.appengine.api.images.ImagesServiceImpl.ImagesService(ImagesServiceImpl.java:284) 


當我第一次讓其他應用程序做getServingUrl它在該應用程序很好,現在我在另一個應用程序中獲得例外。對於每個圖像都是如此,所以可能會導致某些圖像的getServingUrl在一個應用程序中工作(並且保持工作狀態),而getServingUrl用於其他圖像(在同一個存儲桶中,具有所有相同的權限)適用於另一個應用程序。這取決於哪個應用程序首先在該圖像上調用getServingUrl。

直接從雲存儲中讀取圖像始終可在兩個應用程序中使用。

我還在做錯事嗎?或者這是一個錯誤?

+0

這個設計看起來比一個bug還要多。 – Lipis

+0

這是爲什麼要設計?尤其是直接從雲端進行閱讀在兩種應用程序中都可以使用。 – Michiel

+0

可能只是爲了讓它獨一無二..因爲你也可以刪除服務網址並獲得一個新的..!但是,再次......我不知道,我也不知道......還沒有在Java上玩過這個問題.. – Lipis

回答

1

這是App Engine Image API的限制。您無法從兩個或更多獨立應用程序提供圖像。

如果您從Google雲端存儲提供圖片,則無法從兩個單獨的應用提供圖片。只有第一個調用圖像上的getServingUrl的應用程序才能獲取該URL,因爲該應用程序已獲得圖像的所有權。隨後在圖像上調用getServingUrl的任何其他應用程序都將失敗。如果第二個應用程序需要提供圖像,則應用程序需要先複製圖像,然後調用副本上的getServingUrl。 (該副本在存儲空間中被刪除。)