--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Traceback (most recent call last):
File "/Volumes/BrandonsData/Google Drive/web2py/web2py.app/Contents/Resources/gluon/restricted.py", line 217, in restricted
File "/Volumes/BrandonsData/Google Drive/web2py/web2py.app/Contents/Resources/applications/calvinsmultiuploadfromgooggroup/controllers/default.py", line 158, in <module>
File "/Volumes/BrandonsData/Google Drive/web2py/web2py.app/Contents/Resources/gluon/globals.py", line 372, in <lambda>
File "/Volumes/BrandonsData/Google Drive/web2py/web2py.app/Contents/Resources/applications/calvinsmultiuploadfromgooggroup/controllers/default.py", line 116, in submit
File "cgi.pyc", line 591, in __len__
File "cgi.pyc", line 574, in keys
TypeError: not indexable
def submit():
import datetime
form = FORM(LABEL("File(s):"), INPUT(_name='up_files', _type='file', _multiple=''), INPUT(_type='submit'))
if form.accepts(request.vars, formname="form"):
if hasattr(request.vars, 'up_files'):
if len(request.vars.up_files) > 0:
files = request.vars['up_files']
if not isinstance(files, list):
files = [files]
for f in files:
print f.filename
up_file = db.uploads.up_file.store(f, f.filename)
i = db.uploads.insert(notes=request.vars.notes, up_file=up_file,filename=f.filename, username = auth.user.email, up_date= datetime.datetime.now())
db.commit()
return "form submitted" #redirect(URL('data', 'index'))
else:
form.errors.up_files = "No files selected"
return dict(form=form)
--
def submit(): import datetime
form = FORM(LABEL("File(s):"), INPUT(_name='up_files', _type='file', _multiple=''), BR(),INPUT(_type='submit')) # if hasattr(request.vars, 'up_files'): # form.process()
if form.accepts(request.vars, formname="form"):
# if hasattr(request.vars, 'up_files'): # if len(request.vars.up_files) > 0: # if request.vars.up_files:
files = request.vars['up_files'] if not isinstance(files, list): files = [files] for f in files: print f.filename up_file = db.uploads.up_file.store(f, f.filename)
i = db.uploads.insert(notes=request.vars.notes, up_file=up_file, filename=f.filename, up_date= datetime.datetime.now())
db.commit() return "form submitted" #redirect(URL('data', 'index'))
# else: # form.errors.up_files = "No files selected"
return dict(form=form)
I removed that if loop completely and it works fine now:
def submit(): import datetime form = FORM(LABEL("File(s):"), INPUT(_name='up_files', _type='file', _multiple='', requires=IS_NOT_EMPTY()), BR(),INPUT(_type='submit'))
if form.accepts(request.vars, formname="form"):
files = request.vars['up_files'] if not isinstance(files, list): files = [files] for f in files: print f.filename up_file = db.uploads.up_file.store(f, f.filename) i = db.uploads.insert(notes=request.vars.notes, up_file=up_file, filename=f.filename, up_date= datetime.datetime.now()) db.commit() return "form submitted" #redirect(URL('data', 'index'))
return dict(form=form)
I'm trying to use jQuery-File-Upload to implement multiple file uploads. I'm using this tutorial as well as this sample app HERE.
request.vars
according to the declared requirements (expressed by validators). accepts
stores those variables that pass validation into form.vars
. The accepts
function returns True
if the form is accepted. And inserts a record in db.