Thanks Anthony, upload it's work

Now I have some questions:
Can I use form.formstyle = 'divs' on form created with SQLFORM.factory or
some other methods to get div tag instead table

what is difference between:
if form.process().accepted:
and
if form.accepts(request,session):


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)
write() - can write only string // this was error message

how I can get string value from var1=Object or var2=cStringIO.StrindO
on net I find that I need to do serialization
on python that is pickle (if I am not wrong)

On var1 or var2 actually is file what I need to upload
but I don't need to get values from file in string I need file from var1 or
var2 send or save or write to folder
in os I look on os.save() but I'm not shoure is that good way

if I have file in some variable how I can that file save to folder?


- - Miroslav Gojic - -


On Sat, Nov 19, 2011 at 22:36, Anthony <abasta...@gmail.com> wrote:

> Something like this:
>
> def upload():
>     import os
>     uploadfolder=os.path.join(request.folder, 'uploads')
>     form = SQLFORM.factory(
>         Field('file', 'upload', uploadfolder=uploadfolder),
>         Field('new_name'))
>     if form.process().accepted:
>         os.rename(os.path.join(uploadfolder, form.vars.file),
>             os.path.join(uploadfolder, form.vars.new_name))
>     return dict(form=form)
>
> The above uses SQLFORM.factory, though you could also do it using FORM.
> Rather than handling the upload completely manually, this code allows
> web2py to use its usual upload mechanism and automatic file naming, and
> then it simply renames the uploaded file to the name you want (this code
> allows you to enter the new filename in the form itself, though you could
> use some other mechanism for generating the name).
>
> Note, because you're not storing the filename in a db table and not using
> the standard naming scheme, you won't be able to use the
> response.download() method for downloading, though it sounds like you don't
> need to. Instead, you can use response.stream() if necessary.
>
> Anthony
>
>
>
> On Saturday, November 19, 2011 2:14:26 PM UTC-5, miroslavgojic wrote:
>
>> Can I get full example for upload function?
>>
>> This is maybe simply but after one day I don'n have any success.
>>
>> - - Miroslav Gojic - -
>>
>> On Sat, Nov 19, 2011 at 19:24, Anthony <abas...@gmail.com> wrote:
>>
>>> Don't put the form.accepts inside the 'if request.vars' block -- it
>>> needs to run even on form creation (to generate the hidden formname and
>>> formkey fields).
>>>
>>>
>>> On Saturday, November 19, 2011 12:44:31 PM UTC-5, miroslavgojic wrote:
>>>
>>>> Now I have in controller:
>>>> def upload():
>>>>     form = FORM("Upload
>>>> file:",INPUT(_type='file',_**nam**e='myfile'),INPUT(_type='**submi**
>>>> t',_name='submit',_value=**'**Submit'))
>>>>     if request.vars:
>>>>         if form.accepts(request,session):
>>>>             my_file = request.vars.myfile.file
>>>>             my_filename = request.vars.myfile.filename
>>>>         filepath = os.path.join(request.folder, 'uploads') // this
>>>> path work - it is absolute path in hard drive
>>>>         fp =open(filepath.my_filename,'**wb**')
>>>>         fp.write(my_file)
>>>>         fp.close()
>>>>     return dict(form=form)
>>>>
>>>> request.vars.myfile -> make return on stored object
>>>> request.vars.myfile.file -> make return address of stored object
>>>>
>>>> I understood what you told me, and logical check on conditions, but
>>>> how to put everything in one function.
>>>>
>>>> the pseudo algorithm in my head is next:
>>>>
>>>> make def func():
>>>>     make form = FORM(...)
>>>>     check if condition existing
>>>>         make file = request.vars.myfile.file
>>>>         make filename = request.vars.myfile.filename
>>>>         make filepath = os.path.join(...)
>>>>         make write file to filepath filename
>>>>         go to page and show empty form - wait for new file
>>>>     else:
>>>>         just show empty form without submission
>>>>     return form
>>>>
>>>> but I just loss my mind after 24 ours of trying this or similar
>>>> uploads.
>>>>
>>>> Miroslav
>>>>
>>>> On Nov 19, 6:12 pm, Anthony <aba...@gmail.com> wrote:
>>>> > You can tell if the function is being called with a form submission by
>>>> > checking for request.vars:
>>>> >
>>>> > if request.vars:
>>>> >     print 'this is a form submission'
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > On Saturday, November 19, 2011 12:06:40 PM UTC-5, miroslavgojic wrote:
>>>> >
>>>> > > The error is caused when file is not selected.
>>>> > > By default on first run form is empty (file is not selected), and
>>>> form
>>>> > > must wait for selecting and submitting.
>>>> >
>>>> > > How access to file before calling form? What that mean?
>>>> >
>>>> > > Miroslav
>>>> >
>>>> > > On Nov 19, 5:52 pm, Anthony <aba...@gmail.com> wrote:
>>>> > > > You might need to access the file before calling form.accepts
>>>> (first
>>>> > > you'll
>>>> > > > have to check that form.vars.myfile exists). You can also access
>>>> it via
>>>> > > > request.vars.myfile (which won't change, even after form.accepts).
>>>> >
>>>> > > > Anthony
>>>>
>>>>
>>

Reply via email to