文件上传在web应用中是比较普遍的,相对于使用jsp等技术实现文件上传,Grails的文件上传着实让人喜爱,因为极其简单,让人看一遍就容易轻松记住!不多说,实例如下:
假设已有一个名为uploadFile的控制器,并已有相应的GSP页面
1.在gsp页面中使用Grails标签uploadForm
<g:uploadForm name="myUpload" action="saveFile">
<input type="file" name="myFile" />
<button type="submit">提交</button>
</g:uploadForm>
当然也可以使用普通的<g:form>标签,但是这样需要添加一个属性:enctype
="multipart/form-data",其它与<g:uploadForm>并无不同。
2.在grais-app中创建一个控制器controllers
在这个控制器中创建一个action:saveFile
def saveFile(){
/*获取客户端传递过来的文件,
其中getFile()中的参数是类型为file的input的name属性的值*/
def file=request.getFile("myFile")
// 获取文件的大小
println file.size
// 获取文件的类型,如image/jpeg
println file.contentType
// 获取文件的原始名称
println file.originalFilename
// 将文件存储在自己希望存放的地方以及格式
f.transferTo( new File( "d://1.jpg", f.originalFilename))
}
如果这个在很多控制器中都有使用,最好写成一个service!