我的Grails应用程序中的每个用户都有个人资料,希望他们能够上传个人资料照片。因此我在视图中创建了一个uploadForm:
<g:img dir="tmp" file="1.jpg"/>
<g:uploadForm action="upload">
<input type="file" name="myFile" />
<input type="submit" />
</g:uploadForm>
如您所见,我只想用ID = 1
显示用户的个人资料图片。
上传操作:
def upload() {
def f = request.getFile('myFile')
if (f.empty) {
flash.message = 'file cannot be empty'
render(view: 'uploadForm')
return
}
f.transferTo(new File('/tmp/'+springSecurityService.currentUser.id+'.jpg'))
flash.message = 'file in /tmp/'+springSecurityService.currentUser.id+'.jpg'
redirect action: 'edit', id: springSecurityService.currentUser.id
}
我的问题是,ID = 1
用户的个人资料图片没有显示。我检查过它具有正确的值(ID = 1
)。
在我的堆栈跟踪中,我有以下内容:
| ERROR resource.ResourceMeta - 找不到资源:/tmp/1.jpg
为什么不能找到数据?我已将其保存在上传操作中。
答案 0 :(得分:0)
您正在将文件保存到文件系统中的/ tmp文件夹。除非您已为该文件夹授予了适当的权限,否则您将无法保存到此文件夹。
更重要的是,g:img标记在grails应用程序的web-apps文件夹下的tmp文件夹中搜索文件 - 它永远不会在那里找到文件,因为你没有在那里保存它。