google 云存储检查对象是否存在(App Engine Java)
google cloud storage check if object exists (App Engine Java)
我的 AppEngine 项目有一个 API 方法,该方法将可恢复的 URL 发送到 Android 客户端,然后客户端使用该可恢复的 URL 上传图像。
我有另一个 API 方法可以创建和 returns 签名 URL。在 Signed URL 中,您必须指定 Google Cloud Storage 存储桶和对象名称。但是,该对象可能不存在,在这种情况下,已签名的URL当然不起作用。
如何在发出签名 URL 之前快速检查我的 App Engine 后端中是否存在对象(在存储桶中)?
编辑:我的 App Engine 项目是 Cloud Endpoints 项目。
您可以调用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));
}
我的 AppEngine 项目有一个 API 方法,该方法将可恢复的 URL 发送到 Android 客户端,然后客户端使用该可恢复的 URL 上传图像。
我有另一个 API 方法可以创建和 returns 签名 URL。在 Signed URL 中,您必须指定 Google Cloud Storage 存储桶和对象名称。但是,该对象可能不存在,在这种情况下,已签名的URL当然不起作用。
如何在发出签名 URL 之前快速检查我的 App Engine 后端中是否存在对象(在存储桶中)?
编辑:我的 App Engine 项目是 Cloud Endpoints 项目。
您可以调用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));
}