Now that you show more of your code, things are more clear....
...
fileApp=request.vars.pic
filename=fileApp.filename.replace(' ', '')
...
for you fileApp is None, while you expect a cgi.FieldStorage object. I do
not know why that is. It would be "pic" is the fron var name. It could be
the upload is not being submitted. It could be the form is not a multipart
form. I cannot say. You see to be bypassing the SQLFORM.
On Saturday, 19 January 2013 06:57:52 UTC-6, Tito Garrido wrote:
>
>
> On Sat, Jan 19, 2013 at 12:12 AM, Massimo Di Pierro
> <[email protected]<javascript:>
> > wrote:
>
>> filename=(fileApp.filename.repl**ace(' ', '') if fileApp else '')
>>
>>
> Interesting,
>
> I have tried it before but even it does not work... the error appears
> everytime that I enable the validation during the insert... the code that
> Bruno posted above
>
> def my_upload():
> import re
> #print request.vars.pic.filename
> fileApp=request.vars.pic
> #print dir(fileApp)
> #filename=fileApp.filename.replace(' ', '')
> filename=(fileApp.filename.replace(' ', '') if fileApp else '')
> #filename='test.jpg'
> result=''
> http_host=''
>
> #Prevent special caracters in the file name
> expression='[*+~$&^#@!;:,|]'
> regex = re.compile(expression)
> if regex.search(filename):
> result="Special caracters NO!!! Nothing to do..."
> return response.json('<div class="error_wrapper"><div
> id="title__error" class="error" style="display:
> inline-block;">'+result+'</div></div>')
>
> aux=db.files.file_upload.store(fileApp, filename)
> #db.files.insert(file_upload=aux,title=filename) *# USING THIS LINE
> IT WORKS *
>
> *db.files.validate_and_insert(file_upload=db.files.file_upload.store(fileApp,
> filename),title=filename)* # *THIS LINE CAUSES THE ERROR
> *
> if request.env.http_x_forwarded_host:
> http_host = request.env.http_x_forwarded_host.split(':',1)[0]
> else:
> http_host = request.env.http_host
>
>
> last = db().select(db.files.ALL)[-1]
> result=T('Successfuly! Here the link: ')
> result+="<a
> href=http://"+http_host+'/'+request.application+'/'+request.controller+'/download/'+last.file_upload+">Download</a>"
>
> return response.json('<div class="alert alert-success">'\
> +result+\
> '</div>')
>
> 186.214.187.119.2013-01-19.12-53-48.0336b24c-763e-4a83-bff2-50de3905d280
> <type 'exceptions.AttributeError'> 'NoneType' object has no attribute
> 'name' Versão web2py™ (2, 3, 2, datetime.datetime(2012, 12, 17, 15, 3,
> 30), 'stable') Python Python 2.7.3: /usr/local/bin/uwsgi Traceback
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
>
> Traceback (most recent call last):
> File "/home/titogarrido/web2py/gluon/restricted.py", line 212, in restricted
>
>
> exec ccode in environment
> File "/home/titogarrido/web2py/applications/cms/controllers/default.py"
> <https://titogarrido.pythonanywhere.com/admin/default/edit/cms/controllers/default.py>,
> line 118, in <module>
>
>
> File "/home/titogarrido/web2py/gluon/globals.py", line 193, in <lambda>
>
>
> self._caller = lambda f: f()
>
>
> File "/home/titogarrido/web2py/applications/cms/controllers/default.py"
> <https://titogarrido.pythonanywhere.com/admin/default/edit/cms/controllers/default.py>,
> line 100, in my_upload
>
>
> aux=db.files.file_upload.store(fileApp, filename)
>
>
> File "/home/titogarrido/web2py/gluon/dal.py", line 8601, in store
>
>
> filename = file.name
> AttributeError: 'NoneType' object has no attribute 'name'
>
>
>
>
> --
>
> Linux User #387870
> .........____
> .... _/_õ|__|
> ..º[ .-.___.-._| . . . .
> .__( o)__( o).:_______
>
--