jfinal上传图片带参数,完美解决!
今天要讲的是jfinal上传图片方法中如何接收"file"以外的其他参数,同时也算是记录一下自己开发中的踩坑经历,哈哈;好了,言归正转:
第一步:前端我是使用的layui的图片上传方法,具体使用方式请翻阅相关文档:
//layui上传图片
upload.render({
elem: '#fileBtn',
url: '/upload/image',
accept: 'images',
exts: 'jpg' | 'png' | 'jpeg',
auto: true,
bindAction: '#uploadBtn',
done: function(res) {
parent.layer.msg(res.msg);
if(res.code == 200) {
$('.proview-img').css('display', 'inline-block')
$('.proview-img img').attr('src', res.data)
$("[name=image]").val(res.data);
}
}
});
但是如果需要传递另外的参数到后台,需要加上before:
before: function(obj){
this.data={'imgType':'1'};
},
结合以上:
//layui上传图片
upload.render({
elem: '#fileBtn',
url: '/upload/image',
accept: 'images',
exts: 'jpg' | 'png' | 'jpeg',
auto: true,
bindAction: '#uploadBtn',
before: function(obj){
this.data={'imgType':'1'};
},
done: function(res) {
parent.layer.msg(res.msg);
if(res.code == 200) {
$('.proview-img').css('display', 'inline-block')
$('.proview-img img').attr('src', res.data)
$("[name=image]").val(res.data);
}
}
});
接下来就是后台方法了,我使用的是jfinal封装好的UploadFile类来接收图片数据,后面具体保存实现跟普通文件上传无异,将不做展示:
// jfinal图片上传
public void image() {
// 接收前台文件数据
UploadFile uploadFile = getFile();
// 略...
}
我们都知道,jfinal接收前台参数写法很简单:
String param = getPara("你的参数名");
结合以上
// jfinal图片上传
public void image() {
// 接收前台文件数据
UploadFile uploadFile = getFile();
String param = getPara("你的参数名");
// 略...
}
千万注意,接收额外的参数必须写在接收文件代码行之后,例如下面这样就无法获取到前台传的“imgType”的值:
// jfinal图片上传
public void image() {
Integer param = getParaToInt("imgType");
// 接收前台文件数据
UploadFile uploadFile = getFile();
// 略...
}
正确写法:
// 接收前台文件数据,必须放在方法的第一行
UploadFile uploadFile = getFile();
// 接收其他参数
Integer param = getParaToInt("imgType");
好了,以上就是jfinal上传图片接收其他参数的方法,若你也遇到此问题快去试试吧,亲测有效,觉得不错也可以点赞收藏多多支持!