谷歌云存储检查对象是否存在(App Engine Java)

时间:2016-04-04 23:53:11

标签: google-app-engine google-cloud-storage

我的AppEngine项目有一个API方法,可以将可恢复的URL发送到Android客户端,然后使用该可恢复的URL上传图像。

我有另一种API方法可以创建并返回已签名的URL。在签名URL中,您必须指定Google云端存储分区和对象名称。但是,该对象可能不存在,在这种情况下,签名的URL当然不起作用。

如何在发出签名URL之前快速检查App Engine后端中是否存在对象(在存储桶中)?

编辑:我的App Engine项目是一个Cloud Endpoints项目。

1 个答案:

答案 0 :(得分:2)

您可以调用getMetadata来检查对象是否存在而不下载。

GcsService fileService = GcsServiceFactory.createGcsService();
GcsFilename file = new GcsFilename(bucket, object);
fileService.getMetadata(file);

或者,您可以列出存储桶中的所有对象或存储桶中以指定前缀开头的所有对象(如果需要,可以等于对象的名称)。

更新:

这是我将uploadURL发送到我的客户端的方式:

@Override
public String getUploadUrl() throws LoginException, VersionException {
    // Verify that call is from a registered user and with proper headers

    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    String callbackUrl = "/blob";
    return blobstoreService.createUploadUrl(callbackUrl,
           UploadOptions.Builder.withGoogleStorageBucketName("myBucket));
}