我正在尝试使用此问题的代码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()
但它在本地服务器上中断,因此我认为这不是正确的方法。
答案 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());
我认为您的示例中的文件名只有问题。