html mvc 二进制图片,如何利用springmvc上传图片二进制到数据库并回显到网页

spring mvc and mybatis 上传图片并保存blob文件和回写jsp页面预览

首先要明白几点:

1 spring mvc 上传文件用表单提交时form 中enctype="multipart/form-data"如

果不加的话文件上传会fail并且后台接受不到。

2我们必须要在springmvc中设置一个文件拦截配置

这里我才知道spirng框架已经集成了fileupload所以只要导入spring的核心core。jar包即可

3 由于我是写的保存blob文件所以不涉及虚拟文件路径

以下是代码-----------------------------------------------------

java的类定义

public class Person

{

Integer id;

byte [ ] photo;//

}

spring mvc controller 层的定义

{

Person person=new Person();

MultipartHttpServletRequest multipartRequest =(MultipartHttpServletRequest) request;

MultipartFile file=multipartRequest.getFile("photo");

person.setPhoto(file.getbyte());

personService.save(person)// service层调用dao层完成对文件的保存了/

}

上传jsp页面

这里我用了一个js方法他可以去点击浏览选择图片后图片显示到上传jsp中以便用户更好的体验效果

//预览图片

function preview(obj)

{

var result = document.getElementById("result");

var input = document.getElementById("photo");

if(typeof FileReader==='undefined')

{

layer.alert("抱歉,你的浏览器不支持", {icon: 5});

input.setAttribute('disabled','disabled');

}

else

{

// input.addEventListener('change',readFile,false);

var file = obj.files[0];

if(!/image\/\w+/.test(file.type))

{

layer.msg('文件必须为图片!');

$("#photo").attr("value","");

return false;

}

var reader = new FileReader();

reader.readAsDataURL(file);

reader.onload = function(e)

{

                  result.innerHTML = ''

}

}

}

filereader好像是ie5以上支持

下面是jsp回写当修改时照片从数据库中读出二进制传到jsp中jsp直接读取二进制流

定义一个photo.jsp

response.setContentType("image/jpeg");

ServletOutputStream sout = response.getOutputStream();

byte b[] = (byte [])request.getAttribute("photo") ;

sout.write(b);

sout.flush();

sout.close();

out.clear();

out = pageContext.pushBody();

%>

这里需要注意的是request.getAttribute()他需要controller层把二进制requeset.setAttribute("photo",person.getphoto);

在调用photo.jsp那个jsp中我们可以用iframe

这里我用的是一个iframe(我的上传jsp和修改jsp是一个jsp页面)

我在controller层里写了一个

@RequestMapping(value="setPhoto")

public String setPhoto(int id,HttpServletResponse response,HttpServletRequest request)

{

request.setAttribute("photo",Person.get(id).getPhoto());

return "/personform/photo";

}

这样就做好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值