通过(ajaxFileupload.js)提供的ajaxFileUpload方法,异步上传图片,在后台获取并转二进制先存入session中,成功后返回图片的id到ajax,并通过jQuery改变 img src的地址请求该图片的二进制资源。
二次上传会覆盖前一次保存在session中的对象,确定保存后会把session中的对象保存到出数据库中。就可以通过id来请求数据库中的图片二进制资源。
- 代码示例spring+hibernate(前端依赖jquery.js,ajaxFileUpload.js)
- 前台HTML代码
<%-- 图片展示 src为默认图片资源--% <img id="upload" class="pointer img-rounded" alt="点击上传" src="../../../resources/img/upload.jpg" width="100%"> <%-- 图片上传 --> <input id="upfile" style="display: none" type="file" name="upfile">
- JavaScript
/** * 上传图片 */ $("#upload").on('click',function(){ $("#upfile").click(); }); $("#upfile").on("change",upfile); function upfile(){ $.ajaxFileUpload({ secureuri:false, url:"upImg.aj", dataType:"json", //fileElementId是img标签的id fileElementId:'upfile', success:function(data){ //上传成功后改变<img>标签的src地址,id参数其实不需要,主要是为了刷新img的图片资源。 $("#upload").attr("src","getCurImg.aj?id="+data.message); //重新绑定事件,防止二次上传时失效 $("#upfile").on("change",upfile); } }); }
- 后台Controller
/** * 上传图片到session * @param response * @param request */ @RequestMapping(value = "/upImg.aj", method = RequestMethod.POST) public void upImgSession(HttpServletResponse response, HttpServletRequest requ