首页 文章

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

提问于
浏览
3

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

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

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

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

1 回答

  • 1

    您可以调用 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));
    }
    

相关问题