2015-06-22 45 views
0

我想從這個問題getServingUrl() Method using Google Cloud Storage value谷歌存儲文件名必須與/ GS前綴/

GcsFilename gcsFilename = new GcsFilename("bucketName", "objectName"); 
ImagesService is = ImagesServiceFactory.getImagesService(); 
String filename = String.format("/gs/%s/%s", gcsFilename.getBucketName(), gcsFilename.getObjectName()); 
String servingUrl = is.getServingUrl(ServingUrlOptions.Builder.withGoogleStorageFileName(filename)); 

使用的代碼,我不明白爲什麼有/ GS /在路徑的開頭 - 它會導致代碼生成一個不存在的url。但是當我刪除它時,我得到'java.lang.IllegalArgumentException:谷歌存儲文件名必須以/ gs /'

爲前綴回到原來的問題 - 如何從GCS文件獲取服務URL?

我可以做

"http://storage.googleapis.com/"+ filename.getBucketName()+"/"+ filename.getObjectName() 

,但它打破了本地服務器上,因此,我認爲是不正確的方法。

回答

0

這取決於你如何訪問文件。如果直接從客戶端(瀏覽器)訪問該文件,那麼你可以使用一個公共網址:

"http://storage.googleapis.com/"+ filename.getBucketName()+"/"+ filename.getObjectName() 

如果你在內部訪問此文件 - 在你的代碼,或致電getServingUrl(),您可以使用「/ GS /」字首。例如:

Image picture = ImagesServiceFactory.makeImageFromFilename("/gs/" + filename.getBucketName() + "/" + filename.getObjectName()); 

GcsFilename fileName = new GcsFilename(filename.getBucketName(), filename.getObjectName()); 

我認爲在您的示例中只存在文件名的問題。

+0

第一部分不會在本地工作 –

+0

你是什麼意思問題的文件名?我的問題是 - 給定一個文件名,如何創建一個有效的服務網址,請給出一個完整的代碼示例 –

+0

您的代碼是正確的,它適用於我。確保你傳遞了正確的文件名 - 它應該可以工作。 –

相關問題