Skip to content

Instantly share code, notes, and snippets.

@burritofanatic
Last active August 29, 2015 14:22
Show Gist options
  • Save burritofanatic/973b82375b10f3fa68bc to your computer and use it in GitHub Desktop.
Save burritofanatic/973b82375b10f3fa68bc to your computer and use it in GitHub Desktop.
Google App Engine Photo Upload Using Blobstore - Python
import webapp2
import jinja2
import os
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
from models import UserPicfayAsset
import json
jinja_environment = jinja2.Environment(autoescape=True,
loader=jinja2.FileSystemLoader(
os.path.join(os.path.dirname(__file__), 'templates')))
class PhotoUploadFormHandler(webapp2.RequestHandler):
def get(self):
upload_url = blobstore.create_upload_url('/upload_photo')
self.response.headers['Content-Type'] = 'application/json'
obj = {
'uploadURL': upload_url
}
self.response.out.write(json.dumps(obj))
class PhotoUploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
try:
upload = self.get_uploads()[0]
user_photo = UserPicfayAsset(blob_key=upload.key())
user_photo.put()
self.response.headers['Content-Type'] = 'application/json'
obj = {'imageURL': ('/view_photo/%s' % upload.key())}
self.response.out.write(json.dumps(obj))
except:
self.redirect('/upload_failure.html')
class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, photo_key):
if not blobstore.get(photo_key):
self.error(404)
else:
self.send_blob(photo_key)
app = webapp2.WSGIApplication([
('/upload_photo', PhotoUploadHandler),
('/upload_url', PhotoUploadFormHandler),
('/view_photo/([^/]+)?', ViewPhotoHandler)
], debug=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment