10 responses to “The New Google App Engine Blobstore API – First Thoughts”

  1. Brett Slatkin

    Thanks for the write-up!

    The upload URLs are one-time URLs, which mitigates any potential sniffing. An application can do authorization checks before an upload form is displayed.

  2. Eran Kampf

    Hi Brett,
    Thanks for the response. I didn’t notice the fact that the URLs gnerated are one time. But this make the solution only viable for web forms.

    What should API developers do? Lets say that I want to provide an API for iPhone\Android clients to call (lets think of TwitPic’s API as an example).

    What I need to do is:
    * Have the call made send the picture data to my own API handler
    * My API handler code handles authentication etc. and then generates a one time upload URL and then makes a POST call to that URL with the data
    * Another handler is in charge of returning the success of the upload

    This should work (I’m writing the code now) but its not as easy\straightforward as it could be.
    It would have been a lot easier if this process was wrapped in a simple API call that lets me write data to the blobstore (just like S3 provides)

    Btw, can you share some details on how the blobstore is implemented internally? what makes these different than datastore entities?


  3. Brett Slatkin

    Hi Eran,

    What you propose (API generates the URL, then posts to it) is the right approach for now. Agreed that something more REST-like would be easier for application developers. This release focuses on web-based forms.

    Nothing to share yet about how Blobstore works, but we do have a history of being public about how things work under the covers.


  4. Ben


    Can’t an API use a two-step process for uploading as follows?

    1. client make API call to request an upload URL. Handler checks credentials and returns unique URL generated by Blobstore API.

    2. client uses unique upload URL to upload file.


  5. Eran Kampf

    Hi Ben,
    Thats exactly what I said. But thats a lot of workaround code to write…
    There should be a clean easy way for developers to do this…


  6. Brooklyn

    I have translated this article to Chinese on my blog. I don’t know whether there is some problems about the copyright. If you don’t like it, tell me to delete it.

  7. Brandon Donnelson

    I love the blogstore and mapreduce. I made an example/demo after testing it out.

    http://demofileuploadgae.appspot.com/ – my demo

  8. Uros Trebec

    Did anyone figure out how to do a blobstore upload from a running GAE code?

    I have a cronjob that fetches some HTML content, processes it and I would like to store it in the blobstore. What I can’t figure out is how to POST the “file” to the UploadHandler I have.

  9. Keith Grennan

    I’d love to see Google provide an API for direct access to the Blobstore, or at least a tempfile under Java. I am developing a service that assembles a zip file from a bunch of assets that are fetched via HTTP – I just need to be able to spool the data temporarily. I noticed that python seems to provide a tempfile API – does Java?

  10. Fishbone

    Here’s a pretty good tutorial explaining how to use the Blobstore to store and serve images in a GWT/GAE app. The overview drawing is pretty helpful in understanding all the components.