I am working on the same thing but for sounds. I used the experimental file writing to blobstore liker this:
def blobstore_upload(form): from google.appengine.api import files from google.appengine.ext import blobstore if request.env.web2py_runtime_gae and form.vars.file: # Create the file file_name = files.blobstore.create(mime_type='application/octet-stream') # Open the file and write to it with files.open(file_name, 'a') as f: f.write(form.vars.file.file.read()) # Finalize the file. Do this before attempting to read it. files.finalize(file_name) # Get the file's blob key form.vars.blob_key = files.blobstore.get_blob_key(file_name) form.vars.file = None @auth.requires_login() def upload(): return dict(form=crud.update(db.sounds, a0, onvalidation=blobstore_upload, message=T('Upload complete!'))) def download_blob(): from google.appengine.ext import blobstore sound = db.sounds(a0) if not sound: raise HTTP(404) blob_info = blobstore.BlobInfo.get(sound.blob_key) return response.stream(blob_info.open()) Now I am hitting the 10Mb limit so I need to experiment some more with create_upload_url. -rif miercuri, 7 martie 2012, 11:36:40 UTC+2, Sushant Taneja a scris: > > Hi, > > I am trying to use the Google Blobstore API for uploading images. I also > checked the link: http://www.web2pyslices.com/main/slices/take_slice/63 for > the help but couldn't understand much. > > In my application's (uploadPic) default controller I have the code as > follows: > > from google.appengine.ext import blobstore > > def index(): > """ > This provides the upload_url to the upload form > """ > > upload_url=blobstore.create_upload_url(URL('uploadPic','default','pic')) > return dict(upload_url=upload_url) > > def pic(): > """ > This method stores the bolb key in a table and is used for serving the > BLOB images > """ > response.write(request) > > In the view index.html, I have a simple form > > <html> > <body> > <form method='post' action='{{=upload_url}}' > enctype='multipart/form-data'> > <input type='file' name='file'> > <input type='submit' name='submit' value='Upload'> > </form> > </body> > </html> > > As per my understanding, when the upload is successful, GAE automatically > redirects to the URL provided in the create_upload_url function with the > request containing the blob_key. > > But when I execute the above, all I get in the page is None. The log is > showing the following: > > INFO 2012-03-07 09:30:31,188 dev_appserver.py:2865] "GET > /uploadPic/default/index HTTP/1.1" 200 - > INFO 2012-03-07 09:30:37,558 dev_appserver.py:687] Internal > redirection to /uploadPic/default/pic > INFO 2012-03-07 09:30:37,681 gaehandler.py:69] **** Request: > 104.29ms/100.00ms (real time/cpu time) > INFO 2012-03-07 09:30:37,686 recording.py:372] Saved; key: > __appstats__:037500, part: 20 bytes, full: 1234 bytes, overhead: 0.000 + > 0.004; link: http://localhost:8080/_ah/stats/details?time=1331112637576 > INFO 2012-03-07 09:30:37,695 dev_appserver_blobstore.py:447] Upload > handler returned 200 > INFO 2012-03-07 09:30:37,723 dev_appserver.py:2865] "POST > /_ah/upload/ag9kZXZ-aW1hZ2V1cGxvYWRyGwsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxggDA > HTTP/1.1" 200 - > > Can someone please help me understand it ? > > Thanks, > Sushant > > >