GoogleCloudPlatform / appengine-gcs-client

App Engine-Cloud Storage custom client library
Apache License 2.0
124 stars 112 forks source link

Add Blobstore-like upload/download operations #49

Open GabiAxel opened 7 years ago

GabiAxel commented 7 years ago

Greetings,

Following encouragement to move away from Blobstore, I am trying to use GCS client library for operations I previously used Blobstore for. I would like to have an operation for uploading directly to Cloud Storage and then receiving a callback request to an endpoint in my application, and an operation for creating a short-live public URL for serving a non-public object from Cloud storage.

I know such operations are available with Cloud Storage API and in dedicated libraries, but the Cloud Storage API (and therefore libraries that work with it) are not available in the GAE development server, making it very difficult to develop with.

I would rather not upload/download objects through my application, as it seems an unnecessary trip and drain of the application resources, and really a set back compared to upload/download through Blobstore.

Thanks.

Capstan commented 7 years ago

The XML API's POST Object method has a success_action_redirect URL that would let your Application receive an update after the upload is complete. It relies on the client browser operating correctly though, and for a better model, you can use Object Change Notification to see any uploads and take action accordingly.

From the notes in storage_api.py at least, it seems that you could interact with the real cloud storage instead even when using the dev appserver. Not exactly sure how that works with Java.

Being able to interact with GCS in something like the AppEngine devserver is a common request, and is on our roadmap. It will likely be analogous to the Cloud Pub/Sub Emulator rather than the dev appserver proper.

/cc @BrandonY