0

我的 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)。

在我的堆栈跟踪中,我有以下内容:

| 错误 resource.ResourceMeta - 找不到资源:/tmp/1.jpg

为什么找不到数据?我已将其保存在上传操作中。

4

1 回答 1

0

您正在将文件保存到文件系统中的 /tmp 文件夹。除非您对该文件夹授予适当的权限,否则您将无法保存到该文件夹​​。

更重要的是,g:img 标签在你的 grails 应用程序的 web-apps 文件夹下的 tmp 文件夹中搜索文件——它永远不会在那里找到该文件,因为你没有将它保存在那里。

于 2012-10-12T10:46:33.770 回答