我有一个图像字段,我想将图像保存到数据库。但它显示出铸造异常。有人可以帮我这个吗?我正在使用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)
}
}
答案 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
}
}