Just found this in the docs, which perhaps partially answers
my question:
"*Please note:* Because Ajax post does not support multipart
forms, i.e. file uploads, upload fields will not work with the
LOAD component. You could be fooled into thinking it would work
because upload fields will function normally if POST is done from
the individual component's .load view. Instead, uploads are done with
ajax- compatible 3rd-party widgets and web2py manual upload store
commands." http://web2py.com/books/default/chapter/29/12?
search=upload
Does this mean I have to do uploads manually? I'm looking at
http://web2py.com/book/default/chapter/06#Manual-uploads but I'm not
clear on where/how I would perform this.

My table definition:
db.define_table('image',
        Field('title', required=True),
        Field('file', 'upload'))


On Dec 24, 8:09 pm, Yarin <[email protected]> wrote:
> Merry Christmas
>
> I need to do an AJAX form submission for a basic image table. I'm
> following the strategy described 
> here:http://web2py.com/books/default/chapter/29/11#Ajax-form-submission
>
> whereby I create an HTML form by hand, and have a SQLForm handle the
> submission. The record gets inserted fine, except that the image I
> choose is not being uploaded, but a .txt file shows up in the uploads
> folder instead.
>
> Is it possible to use web2py's upload functionality with AJAX
> submissions? What are my options here?
>
> (NOTE: I need to use native jQuery ajax, not web2py ajax helpers, due
> to extenuating circumstances)
>
> The form:
>
> <form id="image-form">
> <input id="image_title" id="image_title" name="title" type="text"
> value="">
> <input id="image_file" name="file" type="file" />
> <input type="submit" name="Submit"/>
> </form>
>
> <script>
>
> $(function() {
>
>         $('#image-form').submit(function() {
>
>                         $.update('{{=URL(c='images', f='process')}}', {
>                                 title: $('#image_title').val(),
>                                 file: $('#image_file').val(),
>                                 });
>                         return false;
>         });});
>
> </script>

Reply via email to