如何使用<input type =“file”/>在load或ajax中发送 - WEB2PY

时间:2017-01-06 18:28:25

标签: web2py

有没有简单的方法可以通过输入类型=&#34;文件&#34;?从.load视图向我的控制器发送文件?或者有没有办法用JQuery做到这一点?

1 个答案:

答案 0 :(得分:0)

默认情况下,Ajax LOAD()组件中的表单将被捕获并通过Ajax提交。但是,用于提交的方法不适用于文件上载。相反,您可以通过向表单元素添加“no_trap”类并设置自己的表单提交处理程序来覆盖默认行为。

在包含表格的视图中:

<form id="upload_form" class="no_trap">...</form>

或者如果表单是在控制器中生成的:

form = SQLFORM(..., _id='upload_form', _class='no_trap')

在包含该组件的视图中,添加一个明确的“目标”(供以后参考):

{{=LOAD('mycontroller', 'myfunction.load', ajax=True, target='upload_form')}}

要处理文件上传,您可以使用FormData API。有关一些想法,请参阅http://blog.teamtreehouse.com/uploading-files-ajax。您也可以考虑使用库,例如​​jQuery File Upload

构建FormData后,您可以按如下方式发布到web2py:

$.web2py.ajax_page('post', url, formData, 'upload_form', form)

其中url是Ajax组件的URL,formData是您通过表单提交处理程序构造的FormData对象,form是jQuery表单对象(即$('form#upload_form'))。这会将表单数据发布到URL,并将“upload_form”目标替换为返回的HTML。