1

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

我的浏览页面>>>

<g:uploadForm action="upload">

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

我的控制器动作 >>>

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

我的域类 >>>

   class User {

    String username
    byte[] avatar
    String avatarType

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

}
4

3 回答 3

4

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

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

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

user.avatar = file?.bytes
于 2013-07-23T12:26:13.697 回答
2

在控制器动作中试试这个,

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

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

于 2013-07-23T08:40:32.223 回答
0

试试这个代码:

if(request instanceof MultipartHttpServletRequest) {
    MultipartHttpServletRequest mpr = MultipartHttpServletRequest)request;
    CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("myfile");
    if(f && !f.empty){
        user.avatar = f.bytes
    }
}
于 2013-07-23T11:38:11.697 回答