Explicitly calling the .store() method should work in 2.4.6, but this
method:
db(db.mytable.id==24).update(file1=request.vars.file1)
doesn't work in any stable version -- it only works in trunk (and therefore
will work in the next stable release).
Anthony
On Thursday, August 15, 2013 2:39:13 AM UTC-4, at wrote:
>
>
> Thank you Anthony!
>
> That means it should be working in 2.4.6-stable? we've 2.4.6-stable on
> production server.
>
> Regards,
> AT
>
> On Thursday, 15 August 2013 10:55:50 UTC+5, Anthony wrote:
>>
>> Looks like there was a bug, which has now been fixed in trunk. So, the
>> second version will work in the next stable release.
>>
>> Anthony
>>
>> On Thursday, August 15, 2013 1:26:18 AM UTC-4, at wrote:
>>>
>>>
>>> 2.4.5
>>>
>>> On Thursday, 15 August 2013 07:44:02 UTC+5, Anthony wrote:
>>>>
>>>> What version of web2py are you using?
>>>>
>>>> On Wednesday, August 14, 2013 9:22:57 PM UTC-4, at wrote:
>>>>>
>>>>> Thanks a lot anthony,
>>>>> db(db.mytable.id==24).update(file1=db.mytable.file1.store(request.vars
>>>>> .file1))
>>>>> works,
>>>>>
>>>>> whereas
>>>>> db(db.mytable.id==24).update(file1=request.vars.file1)
>>>>> gives error:
>>>>> <class 'gluon.contrib.pg8000.errors.ProgrammingError'> ('ERROR',
>>>>> '22001', 'value too long for type character varying(512)')
>>>>>
>>>>> PS. I'd replied to your post yesterday, but somehow it was not posted
>>>>>
>>>>> On Tuesday, 13 August 2013 19:19:44 UTC+5, Anthony wrote:
>>>>>>
>>>>>> On Tuesday, August 13, 2013 9:20:47 AM UTC-4, at wrote:
>>>>>>
>>>>>>>
>>>>>>> Here is my controller code:
>>>>>>> def test_upload:
>>>>>>> if request.vars.file1 is not None:
>>>>>>> result = db(db.mytable.id
>>>>>>> ==24).update(file1=request.vars.file1.file)
>>>>>>>
>>>>>>
>>>>>> request.vars.file1 is a cgi.FieldStorage object. The original
>>>>>> filename is therefore in request.vars.file1.filename.
>>>>>> request.vars.file1.file is a temporary file on the filesystem, and it
>>>>>> does
>>>>>> not contain the original filename (instead, it has a temporary filename
>>>>>> with no extension). If you want to manually insert an uploaded file, you
>>>>>> should pass the cgi.FieldStorage object to the .insert() or .update()
>>>>>> method rather than passing only the .file object from it. So, should be:
>>>>>>
>>>>>> db(db.mytable.id==24).update(file1=request.vars.file1)
>>>>>>
>>>>>> which is equivalent to calling:
>>>>>>
>>>>>> db(db.mytable.id==24).update(file1=db.mytable.file1.store(request.
>>>>>> vars.file1))
>>>>>>
>>>>>> Anthony
>>>>>>
>>>>>
--
---
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.