Grails 项目中处理图片上传,下面是单个的文件上传 Example
2014-04-13 18:34 低调的小码农 阅读(1497) 评论(0) 编辑 收藏 举报- 前台页面上传图片的的GSP页面:
- <g:form action="save" method="post" enctype="multipart/form-data">//上传文件需要把form表单的enctype 属性设置为multipart/form-data
- <div> <input type="file" id
- 前台页面上传图片的的GSP页面:
- <g:form action="save" method="post" enctype="multipart/form-data">//上传文件需要把form表单的enctype 属性设置为multipart/form-data
- <div> <input type="file" id="projectLogoPath" name="projectLogoPath"value="${fieldValue(bean:projectInstance,field:'projectLogoPath')}" />//上传图片的表单控件
- </div> <fieldset class="buttons">
- <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
- </fieldset>
- </g:form>
- ="projectLogoPath" name="projectLogoPath"value="${fieldValue(bean:projectInstance,field:'projectLogoPath')}" />//上传图片的表单控件
- </div> <fieldset class="buttons">
- <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
- </fieldset>
- </g:form>
- Cottroller 中的方法:
- def uploadImage(){//上傳圖片到本地文件夾中
- def fileName
- def filePath
- def f = request.getFile('projectLogoPath')//获取前台页面表单控//中的文件名称
- if(!f.empty) {
- Date d=new Date();
- String dateString= d.format("yyyy-mm-dd-hh-ss")
- String fileProName=f.getOriginalFilename()
- String extension = fileProName.split('\\.')[-1]//截取获取文
- //件名的后缀
- fileName=dateString+"."+extension
- filePath="web-app/images/"
- f.transferTo(new File(filePath+fileName))
- }
- return filename //返回文件名称
- }
- Product domain类中存储的是图片的相对路径:
- def save() {
- User user=SpringSecurityService.currentUser//获取当前用户名
- def productInstance = new Product(params)
- productInstance.state=0;
- String pictureUrl=uploadImage()//调用上传图片的方法,返回一个储//存图片的路径。
- productInstance.pictureUrl=pictureUrl//存储图片路径
- if (!productInstance.save(flush: true)) {
- render(view: "create", model: [productInstance: productInstance])
- return
- }
- ProductSet p=new ProductSet()//在用户保存商品信息的时候将用户和商品关联起来
- p.user=user
- p.product=productInstance
- p.save();
- flash.message = message(code: 'default.created.message', args: [
- message(code: 'product.label', default: 'Product'),
- productInstance.id
- ])
- redirect(action: "list", id: productInstance.id)
- }
- 前台页面显示显示图片方式:
- <img
- src="<%=request.getContextPath()%>/images/${productInstance.pictureUrl}" alt="Grails" style="height:100px;width: 150px;"/>