Dear All, I have a problem with Field('upload). It seems that some file names produce an error in DAL.
Let's take a "test" app to reproduce it. 1) A simple model : db = DAL('mysql://user:pass@myServer') db.define_table('file', Field('title', label=T('Title'), notnull=True), Field('file', 'upload', uploadfolder=os.path.join( request.folder,'static','uploaded_files' ), notnull=True, autodelete=True, label=T('File')), format='%(title)s' ) 2) a controller : def files(): a_file = db.file(request.args(0)) crud.settings.update_deletable=False if len(request.args) and a_file: crud.settings.update_deletable = False form = crud.update(db.file,a_file,next='files_list') else: form = crud.create(db.file) return dict(a_file=a_file, form=form) 3) A view "files.html": {{extend 'layout.html'}} {{ if a_file: }} <h1>{{=T('Edit file')}}</h1> {{ else: }} <h1>{{=T('Add a file')}}</h1> {{ pass }} {{=form}} Then go on http://127.0.0.1:8000/test/default/files/ Try to upload a file : everything works fine Create a simple file (regardless the type, it can be a txt file or anything else) but named *Audi A6 Avant 3.0 V6 TDI 240 DPF Quattro Tiptronic S Line (Break) 10_2009, Packs et options - Cote automobile - autoplus.fr.txt* or take the attached file Try to upload this file : you got the fllowing error Error ticket for "test" Ticket ID 127.0.0.1.2013-03-16.11-43-07.109e09df-378c-4e89-96b1-175c300f70d6 <type 'exceptions.IOError'> [Errno 2] No such file or directory: 'D:\\Google Drive\\loic\\web2py\\web2py\\applications\\test\\static\\uploaded_files\\file.file.accd0d98e01c0b64.41756469204136204176616e7420332e30205636205444492032343020445046205175617474726f2054697074726f6e69632053204c696e652028427265616b292031305f323030392c205061636b73206574206f7074696f6e73202d20436f7465206175746f6d6f62696c65202d20.txt' Version web2py™ (2, 4, 2, 'stable', datetime.datetime(2013, 3, 4, 3, 26, 21)) Python Python 2.7.2: C:\Python27\python.exe (prefix: C:\Python27) Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Traceback (most recent call last): File "D:\Google Drive\loic\web2py\web2py\gluon\restricted.py", line 212, in restricted exec ccode in environment File "D:/Google Drive/loic/web2py/web2py/applications/test/controllers/default.py" <http://127.0.0.1:8000/admin/default/edit/test/controllers/default.py>, line 87, in <module> File "D:\Google Drive\loic\web2py\web2py\gluon\globals.py", line 193, in <lambda> self._caller = lambda f: f() File "D:/Google Drive/loic/web2py/web2py/applications/test/controllers/default.py" <http://127.0.0.1:8000/admin/default/edit/test/controllers/default.py>, line 84, in files form = crud.create(db.file) File "D:\Google Drive\loic\web2py\web2py\gluon\tools.py", line 3631, in create **attributes File "D:\Google Drive\loic\web2py\web2py\gluon\tools.py", line 3572, in update detect_record_change=self.settings.detect_record_change): File "D:\Google Drive\loic\web2py\web2py\gluon\sqlhtml.py", line 1459, in accepts field.uploadfolder) File "D:\Google Drive\loic\web2py\web2py\gluon\dal.py", line 9228, in store dest_file = open(pathfilename, 'wb') IOError: [Errno 2] No such file or directory: 'D:\\Google Drive\\loic\\web2py\\web2py\\applications\\test\\static\\uploaded_files\\file.file.accd0d98e01c0b64.41756469204136204176616e7420332e30205636205444492032343020445046205175617474726f2054697074726f6e69632053204c696e652028427265616b292031305f323030392c205061636b73206574206f7074696f6e73202d20436f7465206175746f6d6f62696c65202d20.txt' I think the file name contains not allowed characters but I don't understand what is the exact problem... Can anyone explain me? I'm on Windows7 pro x64, Python 2.7.2, Web2py 2.4.2, MySQL 5.5.29 Thank you -- --- 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
test