This is code for manual upload (it's work for me):

def upload():
    import os
    import shutil
    uploadfolder=os.path.join(request.folder, 'uploads')
    form = FORM(
        "Upload file:",
        INPUT(_type='file',_name='my_file', requires=IS_NOT_EMPTY()),
        'Your name:',
        INPUT(_name='new_name', requires=IS_NOT_EMPTY()),
        INPUT(_type='submit'))
    if form.process(dbio=True).accepted:
        m_ofn = form.vars.my_file.filename
        m_nf = uploadfolder + '/' + m_ofn + '_' + form.vars.new_name
        my_object = form.vars.my_file.file
        m_f = open(m_nf, "wb")
        #m_f.write(my_object.read()) //this ca be used
        shutil.copyfileobj(my_object,m_f) //but I us this
        m_f.close()
    return dict(form=form)

Thanks to Anthony and Massimo


- - Miroslav Gojic - -



On Sun, Nov 20, 2011 at 17:50, Massimo Di Pierro <massimo.dipie...@gmail.com
> wrote:

> > what is difference between:
> > if form.process().accepted:
> > and
> > if form.accepts(request,session):
>
> no difference functionally, just different APIs.
>
> > If I have two variables (var1 and var2)
> > var1 = Object
> > var2 = cStringIO.StrindO 0x1234
> >
> > Before your example I was stack with
> > file.write(var1)
> > or
> > file.write(var2)
> > how I can get string value from var1=Object or var2=cStringIO.StrindO
>
> file.write(var2.read())
>
> or more memory efficiently
>
> import shutil
> shutil.copyfileobj(var2,file)
>
>
>
>
>

Reply via email to