App Engine team: Thanks for introducing BlobstoreService. It looked like it was going to solve a major impediment in an application I am prototyping, but I hit the wall (again) with only being able to regurgitate blobs during an http response, and not do anything useful with them in the cloud.
I am using BlobstoreService to upload and store serialized spatial indexes. I want to be able to query them with point geometry, but once they are in the store there is no way for me to fetch them again within the context of my application. I can delete(key) in an application context, and serve(key) them directly back to the browser, but I cannot fetch them from the blobstore and operate on them, which is exactly what I need to do in my app. For a minute I was tricked into thinking that I could use the URL Fetch API from within my app, since serve(key) pumps out the data in response to a get call. But an internal URL Fetch is also limited to 1MB, and I receive the dreaded: "The response from url http://localhost:8888/serve/blob?blob-key=2rdXcmNBIZz3_mDE8msbXg was too large." (Of course, if I just hit that same URL in my browser, I download the data just fine -- its just within a programmatic App Engine context that I cannot fetch that URL.) "All I want for Christmas is my two front teeth." In this case, the teeth are either or both of the following hooks: 1) New URL Fetch API feature realizes that it is calling the BlobstoreService, and lets data > 1MB pass through. Since BlobstoreService is handling the response internally, add an extra header that URL Fetch understands to lift the size limit restriction. You could even restrict this to only allow URL Fetch of blobs in the same App Engine application. 2) Expose a BlobstoreService.get(BlobKey key) method so applications can fetch blobs after they are stored and do something useful with them -- like geospatial operations on spatial index blobs, or opening stored zip archives and processing contents with task queues. No worries if people go blob crazy -- billing is turned on, and real fancy querying needs to be done with basic datastore entities anyways. Please consider one or both of these options. Option #2 sounds like a no-brainer to me, because somewhere under the serve() hood you must be fetching the blob by key already. Stuart -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
