供稿人:张文秀
如下面的代码所示,在 gsp 中放置了一个表单,表单中有一个文件选择控件(input type='file'):
<g:form action="foo" name="fmFoobar">
<input type=”file” name=”file”>
</g:form>
表单提交后,在操作 foo 中,无法通过 request.getFileMap() 获得上传的附件。
原因分析:
- 附件上传,表单必须用 POST 方式提交
- 附件上传,必须设置表单的 enctype 为 “multipart/form-data”,如需兼容 IE6/IE7 的话,还需要设置表单属性 encoding 为 “multipart/form-data”
- 如果附件大小为 0,后台也无法获得上传的附件
因此,上面的代码应该修改为:
<g:form action="foo" name="fmFoobar" method="post" enctype="multipart/form-data" encoding="multipart/form-data">
<input type=”file” name=”file”>
</g:form>
BTW:如果不是使用 jQuery 插件 ajaxForm 进行 AJAX 提交的话,上面的 enctype 和 encoding 可以忽略,BroFramework 会自动添加这两个属性。