Image 在grails中保存图像

Image 在grails中保存图像,image,grails,grails-2.0,Image,Grails,Grails 2.0,我有一个图像字段,我想从中将图像保存到数据库。但这是一个例外。谁能帮我一下吗?我正在使用Grails2.1.0。下面是我的代码: 我的查看页面>>> <g:uploadForm action="upload"> Photo: <input name="photo" type="file" /> <g:submitButton name="upload" value="Upload"/> 我的域类>>> class User { String

我有一个图像字段,我想从中将图像保存到数据库。但这是一个例外。谁能帮我一下吗?我正在使用Grails2.1.0。下面是我的代码:

我的查看页面>>>

<g:uploadForm action="upload">

Photo: <input name="photo" type="file" />
<g:submitButton name="upload" value="Upload"/>
我的域类>>>

   class User {

    String username
    byte[] avatar
    String avatarType

    static constraints = {
        avatar(nullable:true, maxSize: 1024 * 1024 * 2 /* 2MB */)
        avatarType(nullable:true)
    }

}

在控制器操作中尝试此操作

def upPic1 = request.getFile('photo')
user.avatar=upPic1.getBytes()

异常是因为将CommonsMultipartFile强制转换为字节。因此,请将其转换为字节,然后存储它。

在控制器操作中尝试此操作

def upPic1 = request.getFile('photo')
user.avatar=upPic1.getBytes()
异常是因为将CommonsMultipartFile强制转换为字节。因此,请将其转换为字节,然后存储它。

请尝试以下代码:

if(request instanceof MultipartHttpServletRequest) {
    MultipartHttpServletRequest mpr = MultipartHttpServletRequest)request;
    CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("myfile");
    if(f && !f.empty){
        user.avatar = f.bytes
    }
}
请尝试以下代码:

if(request instanceof MultipartHttpServletRequest) {
    MultipartHttpServletRequest mpr = MultipartHttpServletRequest)request;
    CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("myfile");
    if(f && !f.empty){
        user.avatar = f.bytes
    }
}

因为人们可以用一个输入上传多个文件,所以我这样做是为了确保我只得到一个文件

CommonsMultipartFile file = params.list("photo")?.getAt(0)
然后您可以轻松地执行以下操作:

user.avatar = file?.bytes

因为人们可以用一个输入上传多个文件,所以我这样做是为了确保我只得到一个文件

CommonsMultipartFile file = params.list("photo")?.getAt(0)
然后您可以轻松地执行以下操作:

user.avatar = file?.bytes

你犯了什么错误?stacktrace很好。@ErikPragt我收到这个错误>>“无法强制转换对象'org.springframework.web.multipart.commons。”。CommonsMultipartFile@709e6c86将“org.springframework.web.multipart.commons.commons multipartfile”类更改为“byte”类“您遇到了什么错误?”?stacktrace很好。@ErikPragt我收到这个错误>>“无法强制转换对象'org.springframework.web.multipart.commons。”。CommonsMultipartFile@709e6c86将“org.springframework.web.multipart.commons.commons multipartfile”类改为“byte”类“如果我使用该类,则会显示>>“无法解析符号getFile”我没有导入任何内容。请尝试导入此内容。导入org.springframework.web.multipart.commons.commons multipartfileyes,但此处是否有使用getFile()的方法如果不想使用getFile,请使用like。将控件名称照片更改为avatar。然后在控制器操作中创建对象,如def user=new user(params)。图像自动存储为字节。如果使用此选项,则显示>>“无法解析符号getFile”我没有导入任何内容。请尝试导入。import org.springframework.web.multipart.commons.commons multipartfileyes,但是否有使用getFile()的方法如果您不想使用getFile,请使用like。将控件名称照片更改为avatar。然后在控制器操作中创建obj like def user=new user(params)。自动将图像存储为字节。您的解决方案有效。谢谢。但我如何检查它是否是图像文件,然后保存它?您能帮我吗?除了查看扩展名之外,我不知道如何检查它是否是图像文件。
FileNameUtils.getExtension(file?.originalFileName)
您的解决方案有效。谢谢。但是我如何检查它是否是图像文件,然后保存它?您能帮我吗?除了查看扩展名之外,我不知道如何检查它是否是图像文件。
FileNameUtils.getExtension(file?.originalFileName)