Google存储文件名必须以/ gs /

时间:2015-06-22 14:44:18

标签: google-app-engine

我正在尝试使用此问题的代码getServingUrl() Method using Google Cloud Storage value

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:Google存储文件名必须以/ gs /'为前缀

回到最初的问题 - 如何从GCS文件中获取服务URL?

我能做到

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

但它在本地服务器上中断,因此我认为这不是正确的方法。

1 个答案:

答案 0 :(得分:0)

这取决于您希望如何访问该文件。如果直接从客户端(浏览器)访问该文件,则可以使用公共URL:

"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());

我认为您的示例中的文件名只有问题。