版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28562059/article/details/52857120
grails上传图片
第一步:
<g:form action= "save" method= "post" enctype= "multipart/form-data" >//上传文件需要把form表单的enctype 属性设置为 multipart/form-data
第二步:写上传图片拿到本地文件夹的uploimage函数
def uploadImage(){//上传图片到本地文件夾中
println 'yyyyyyyy'
// def fileName
//def filePath
def f = request.getFile('pictureUrl')//获取前台页面表单控//中的文件名称
println f
if (!f.empty) {
// String fileProName = f.originalFilename
def webRootDir = servletContext.getRealPath("/")
def userDir = new File(webRootDir, "/payload/")
userDir.mkdirs()
f.transferTo(new File(userDir, f.originalFilename))
println f.originalFilename
return f.originalFilename
}
// println f.originalFilename
return fileName //返回文件名称
}
第三步:修改保存图片的路径
@Transactional
def save(Goods goodsInstance) {
println goodsInstance
if (goodsInstance == null) {
notFound()
return
}
if (goodsInstance.hasErrors()) {
respond goodsInstance.errors, view:'create'
return
}
String photoUrl=uploadImage()//调用上传图片的方法,返回一个储存图片的路径。
goodsInstance.photoUrl=photoUrl//存储图片路径
println goodsInstance.photoUrl
goodsInstance.save flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'goods.label', default: 'Goods'), goodsInstance.id])
redirect goodsInstance
}
'*' { respond goodsInstance, [status: CREATED] }
}
}
第四步: 修改页面的标签
<div class="fieldcontain ${hasErrors(bean: goodsInstance, field: 'photoUrl', 'error')} ">
<label for="photoUrl">
<g:message code="goods.photoUrl.label" default="Photo Url" />
</label>
%{--<g:textField name="photoUrl" value="${goodsInstance?.photoUrl}"/>--}%
<input type= "file" id= "pictureUrl" name= "pictureUrl" />
</div>
第五步:前台页面显示显示图片方式
<span id="photoUrl-label" class="property-label">Photo:</span>
<span class="property-value" aria-labelledby="photoUrl-label">
<img src="${createLinkTo(dir:'payload',
file:''+goodsInstance.photoUrl)}"
alt="${goodsInstance.photoUrl}"
title="${goodsInstance.photoUrl}" style="width: 200px">
</span>