标签所做的<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
那么你在控制器中做什么取决于你如何保存上传的文件。如果您将其保存到 abyte [] myFile
中,如果字段名称设置正确,它将自动绑定,因此您无需执行任何操作 - 它可以正常工作。
//controller
myInstance.properties = params //binds text as well as upload files
如果要将其保存到文件系统,则可以执行以下操作(直接来自手册):
//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')