Uploading a large number of files using Web2py

50 views
Skip to first unread message

Fernando Pardo

unread,
Sep 27, 2014, 12:02:59 PM9/27/14
to web...@googlegroups.com
Hi!

I'm using Web2py to build a desktop application that will run on the user's computer using the localhost. An use case involves the user uploading a large number of files (about 100-200 files ranging from 5 to 30 MB) MB each. Here is a simplified chuck of code I'm using:

########################
Model:

Campos_Archivo_grabadora = [
    Field('archivo_nombre_original',required=True),
    Field('archivo','upload', autodelete=True,required=True),
    ]

db.define_table('Archivo_grabadora',*Campos_Archivo_grabadora, 
    singular='Archivo grabadora', plurals='Archivos grabadoras')
########################

########################
Controller:

def index():

forma = FORM(INPUT(_name='archivos_audibles', _type='file', _multiple=True,
        requires=IS_NOT_EMPTY()))

if forma.accepts(request.vars,formname='formaHTML'):

        archivosAudibles = forma.vars['archivos_audibles']

        if not isinstance(archivosAudibles, list):
        
            archivosAudibles = [archivosAudibles]
            
        for aux in archivosAudibles:

            ArchivoAudible = db.Archivo_grabadora.archivo.store(aux, aux.filename)
            
            datosArchivoAudible = {}
            datosArchivoAudible['archivo'] = ArchivoAudible
            datosArchivoAudible['archivo_nombre_original'] = aux.filename
            db.Archivo_grabadora.insert(**datosArchivoAudible)
    
########################

########################
View:

{{extend 'layout.html'}}
<form action="" enctype="multipart/form-data" method="post">
<input type="hidden" name="_formname" value="formaHTML"/>
        <input type="file" name="archivos_audibles" multiple/>
<input type="submit" value="Enviar" class="btn" id="enviar"/>
</form>

########################

However, my application does not seem to handle this correctly: spends a lot of time and cpu resources, and sometimes freezes. I would like to know how to solve this issue. Thank you!

Massimo Di Pierro

unread,
Sep 29, 2014, 9:25:32 AM9/29/14
to web...@googlegroups.com
This line:

   ArchivoAudible = db.Archivo_grabadora.archivo.store(aux, aux.filename)

should be

   ArchivoAudible = db.Archivo_grabadora.archivo.store(aux.file, aux.filename)

Anyway, you cannot upload this many files. There are size limits to how much you can upload:


but there are issues with this design. This is a multipart file
Reply all
Reply to author
Forward
0 new messages