将图像保存为grails

时间:2013-07-23 07:22:20

标签: image grails grails-2.0

我有一个图像字段,我想将图像保存到数据库。但它显示出铸造异常。有人可以帮我这个吗?我正在使用grails 2.1.0。这是我的代码:

我的观看页面>>>

<g:uploadForm action="upload">

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

我的控制器操作&gt;&gt;&gt;

def upload={
  def user = User.findById(1)
     user.avatar = params.photo
     user.save()
}

我的域类&gt;&gt;&gt;

   class User {

    String username
    byte[] avatar
    String avatarType

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

}

3 个答案:

答案 0 :(得分:4)

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

CommonsMultipartFile file = params.list("photo")?.getAt(0)

然后你可以很容易地做到:

user.avatar = file?.bytes

答案 1 :(得分:2)

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

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

异常是因为将CommonsMultipartFile转换为Byte.So转换为字节然后存储它。

答案 2 :(得分:0)

试试这段代码:

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