My AppEngine project has an API method that sends a resumable URL to an Android Client which then uses that resumable URL to upload an image.
I have another API method that create and returns a signed URL. In the Signed URL you must specify the Google Cloud Storage bucket and object name. However, that object may not exist, in which case, the signed URL will of course not work.
How can I quickly check if an object exists (in a bucket) in my App Engine backend before issuing the Signed URL?
EDIT: My App Engine project is a Cloud Endpoints project.
You can call getMetadata
to check if the object exists without downloading it.
GcsService fileService = GcsServiceFactory.createGcsService();
GcsFilename file = new GcsFilename(bucket, object);
fileService.getMetadata(file);
Alternatively, you can list all objects in a bucket or all objects in a bucket that start with the specified prefix (which can equal the object's name, if necessary).
UPDATE:
This is how I send uploadURL to my client:
@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));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With