When playing around with uploads, I tried to get the example from the web2py book working:
def form_from_factory(): form = SQLFORM.factory( Field('your_name', requires=IS_NOT_EMPTY()), Field('your_image', 'upload')) if form.accepts(request.vars, session): response.flash = 'form accepted' session.your_name = form.vars.your_name session.filename = form.vars.your_image elif form.errors: response.flash = 'form has errors' return dict(form=form) When run, it gave me this error (on a brand new version 1.95.1) Traceback (most recent call last): File "/home/jon/code/sandpit/web2py/gluon/restricted.py", line 181, in restricted exec ccode in environment File "/home/jon/code/sandpit/web2py/applications/upload/controllers/ upload.py", line 14, in <module> File "/home/jon/code/sandpit/web2py/gluon/globals.py", line 133, in <lambda> self._caller = lambda f: f() File "/home/jon/code/sandpit/web2py/applications/upload/controllers/ upload.py", line 6, in form_from_factory if form.accepts(request.vars, session): File "/home/jon/code/sandpit/web2py/gluon/sqlhtml.py", line 1146, in accepts newfilename = field.store(source_file, original_filename) File "/home/jon/code/sandpit/web2py/gluon/dal.py", line 4966, in store raise RuntimeError, "you must specify a Field(...,uploadfolder=...)" RuntimeError: you must specify a Field(...,uploadfolder=...) To fix it I had to - import os - change the upload field to Field('your_image', 'upload', uploadfolder=os.path.join(request.folder,'uploads')) I thought uploadfield should default to what I have added, from the description of Field in the book. Have I done something stupid?