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

Mic*_*cro 6 google-app-engine google-cloud-storage

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

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

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

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

And*_*gin 3

您可以调用getMetadata来检查对象是否存在,而无需下载它。

GcsService fileService = GcsServiceFactory.createGcsService();
GcsFilename file = new GcsFilename(bucket, object);
fileService.getMetadata(file);
Run Code Online (Sandbox Code Playgroud)

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

更新:

这是我向客户端发送 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));
}
Run Code Online (Sandbox Code Playgroud)