Hi!

I'm trying to create a very simple upload field, without any complex 
mechanism. A user just uploads a file to a folder in the server (apache), 
without web2py changing the file name, and without any db. I have some 
dozens of files already in a folder in the server, I just need an upload 
form to send new files easly, without having to go personally with an Usb 
Pen to the server to copy new files.

But I'm having an hard time doing it, and dont know why. With small files 
(2mb docx file) it works perfectly. But when uploading a 300mbs wav file it 
gives an error ticket:
<type 'exceptions.MemoryError'>
TRACEBACK

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.

Traceback (most recent call last):
  File "D:\web2py\gluon\restricted.py", line 212, in restricted
    exec ccode in environment
  File "D:/web2py/applications/Upload_Fala_Bracarense/controllers/default.py" 
<https://cehum.ilch.uminho.pt/admin/default/edit/Upload_Fala_Bracarense/controllers/default.py>,
 line 121, in <module>
  File "D:\web2py\gluon\globals.py", line 188, in <lambda>
    self._caller = lambda f: f()
  File "D:/web2py/applications/Upload_Fala_Bracarense/controllers/default.py" 
<https://cehum.ilch.uminho.pt/admin/default/edit/Upload_Fala_Bracarense/controllers/default.py>,
 line 28, in index
    form = SQLFORM.factory(Field('myfile', 'upload', 
uploadfolder='/static')).process()
  File "D:\web2py\gluon\html.py", line 2170, in process
    self.validate(**kwargs)
  File "D:\web2py\gluon\html.py", line 2109, in validate
    if self.accepts(**kwargs):
  File "D:\web2py\gluon\sqlhtml.py", line 1281, in accepts
    **kwargs
  File "D:\web2py\gluon\html.py", line 2022, in accepts
    self._traverse(False, hideerror)
  File "D:\web2py\gluon\html.py", line 842, in _traverse
    newstatus = c._traverse(status, hideerror) and newstatus
  File "D:\web2py\gluon\html.py", line 842, in _traverse
    newstatus = c._traverse(status, hideerror) and newstatus
  File "D:\web2py\gluon\html.py", line 842, in _traverse
    newstatus = c._traverse(status, hideerror) and newstatus
  File "D:\web2py\gluon\html.py", line 842, in _traverse
    newstatus = c._traverse(status, hideerror) and newstatus
  File "D:\web2py\gluon\html.py", line 853, in _traverse
    self._postprocessing()
  File "D:\web2py\gluon\html.py", line 1762, in _postprocessing
    _value = str(self['_value'])
  File "C:\Python27\Lib\cgi.py", line 515, in __repr__
    self.name, self.filename, self.value)
MemoryError

IN FILE: 
D:\WEB2PY\APPLICATIONS\UPLOAD_FALA_BRACARENSE\CONTROLLERS/DEFAULT.PY
I have tried a lot of diferent ways. I have read everything I could find in 
the web. I found a topic with the same problem but no solution I could use. 
Anyone can help with some tips?

This the code in the controller:

import os

def index():
    form = FORM(INPUT(_type='file',_name='myfile'),INPUT(_type='submit'))
    if form.accepts(request.vars,session):
        
open(os.path.join(request.folder,'uploads','filename.wav'),'wb').write(form.vars.myfile.file.read())
    return dict(form=form)

I have tried a lot of different ways, this only an example. I used 
SQLFORM.factory {form = SQLFORM.factory(Field('myfile', 'upload', 
uploadfolder='/static')).process()}, shutil 
{shutil.copyfileobj(request.vars.myfile.file,open(os.path.join(request.folder,'static','filename.txt'),'wb'))},
 
and a lot of different code variants but none worked. Its allways the same: 
with small files it works, with a 200mb file it gives an error.


Anyone can help me understand this problem? The max file size I need to 
upload is 500mb. It will be used by only one person, with a login, so there 
is no need to a complex mechanism, and files need to mantain the same name. 
I just need the upload to work. 

Thanks and sorry for my bad english.




I want a user to be able to upload a file to a directory in the server 
(apache), without changing the file name, and wihout databases. A simple 
and direct upload, so a friend of mine can store some files in

-- 



Reply via email to