所有<g:uploadForm...>
标签所设置的格式为enctype至multipart/form-data
。要上传标准文本输入和文件,我通常只是做到以下几点:
//GSP
<g:form method="post" enctype="multipart/form-data" action="update">
<input type="text" name="myTextField" id="myTextField" />
<input type="file" id="myFile" name="myFile" />
<g:actionSubmit class="save" action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" />
</g:form> //closing tag fixed
然后你在你的控制器做什么取决于你如何保存上传文件。如果你将它保存到byte [] myFile
,它将自动绑定,如果字段名称设置正确,所以你不必做任何事情 - 它只是工作。
//controller
myInstance.properties = params //binds text as well as upload files
如果你把它保存到文件系统,你可以做这样的事情(直接从manual):
//Controller
def f = request.getFile('myFile')
if (f.empty) {
flash.message = 'file cannot be empty'
render(view: 'uploadForm')
return
}
f.transferTo(new File('/some/local/dir/myfile.txt'))
response.sendError(200, 'Done')
您未接受我的答案接受自己的答案?即使我给了你整个解决方案,你所做的基本上是重申了我所说的有关表单标签之间的区别。恕我直言,这是非常糟糕的形式,并会让人停止帮助你。 – Kelly 2012-07-12 23:10:28
哟放松,我想我可以选择多个答案,如果它让你感觉更好,我会选择你的答案对我无关 – Ameya 2012-07-12 23:38:33
这是关于承认帮助你的人 - 哟。 – Kelly 2012-07-13 00:05:59