图片上传
2015-11-11 23:06
861 查看
项目要求:实现图片上传,一行四张图片。
实现方法:一个imglist存放已上传的图片src,一个defaultlist 循环默认图片,循环次数为 4-imglist.size();
点默认图片执行onclick(),弹出图片选择框,选择完图片 执行onchange() 方法,调用ajaxupload 方法
把图片file传递到后台action。
前段jsp页面:
js代码:
后台java代码:
用到的js:ajaxfileupload.js,ajaxfileupload.css, jquery.min.js
实现方法:一个imglist存放已上传的图片src,一个defaultlist 循环默认图片,循环次数为 4-imglist.size();
点默认图片执行onclick(),弹出图片选择框,选择完图片 执行onchange() 方法,调用ajaxupload 方法
把图片file传递到后台action。
前段jsp页面:
<div class="container-fluid"> <c:forEach var="image" items="${imglist }" varStatus="idx"> <td> <img id="${image.id}" alt="${image.id}" width="120" height="120" src="<%=basePath%>${image.src}" onmouseover="showDeleteDiv('${image.id}');" onmouseout="imgOnmouseout(),hideDeleteDiv('${image.id}');"> </td> </c:forEach> <c:forEach begin="${i}" end="3" step="1" varStatus="idx"> <img src="${pageContext.request.contextPath}/img/drugstore/default.png" id="img" onclick="upload()" ></img> <span style="display: none"><input name="advImage" id="advImage" type="file" style="opacity: 0;"/></span> <input type="hidden" name="type" value="1" id="type1"> </c:forEach> </div>
js代码:
function upload(){ document.getElementById("advImage").click(); } $("input[name='advImage']").change(function(){ // 检查图片格式 var f=document.getElementById("advImage").value; if(!/.(gif|jpg|jpeg|png|JPG|PNG)$/.test(f)) { alert("图片类型必须是.jpeg,jpg,png中的一种") return false; } $.ajaxFileUpload( {url:"${pageContext.request.contextPath }/img/upload.do", secureuri:false, dataType:"text", fileElementId:"advImage", data: {//图片类型为1 即 店铺图片 "type": $("#type1").val(), }, success:function (data) { //上传成功后,直接跳出截图框,使用imgAreaSelect插件 window.location.reload(); }, error:function (data, status, e) { alert("图片上传失败,请重新选择图片"); } }); });
后台java代码:
@Controller @RequestMapping("/img") public class uploadimg { @Autowired private BaseService baseService; @RequestMapping("/upload.do") public ModelAndView uploadPreviewImage(HttpServletRequest request, HttpServletResponse response) throws IOException{ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile image=null; if(multipartRequest.getFile("advImage")==null||"".equals(multipartRequest.getFile("advImage"))){ image = multipartRequest.getFile("aptitude"); }else if(multipartRequest.getFile("aptitude")==null||"".equals(multipartRequest.getFile("aptitude"))){ image = multipartRequest.getFile("advImage"); } String type=request.getParameter("type"); response.setCharacterEncoding("utf-8"); //response.setHeader("ContentType", "json"); response.setContentType("application/json"); if(image!=null){ long time = System.currentTimeMillis(); String logImageName = image.getOriginalFilename(); String file_ext = logImageName.substring(logImageName.lastIndexOf(".") + 1); // System.out.println("[fileType:"+fileType+"][fileName:"+fileName+"][fileSize:"+fileSize+"]"); //获得项目的跟目录 String realPath = request.getSession().getServletContext().getRealPath("/"); b4e4 String realPathLast = realPath+"img\\drugstore\\"; String saveName=time+"."+file_ext; String src="img/drugstore/"+saveName; SaveFileFromInputStream(image.getInputStream(),realPathLast,saveName); //获得药店用户名 String account=(String) request.getSession().getAttribute("account"); //查找药店id String stat_find="com.yksStore.model.drugstore.findid"; Map<String, String> map1=new HashMap<String, String>(); map1.put("account", account); int drugstore_id= (Integer) baseService.find(stat_find, map1); String stat="com.yksStore.model.drugstore.inserimg"; Map map=new HashMap(); map.put("drugstore_id", drugstore_id); map.put("src", src); map.put("type", type); baseService.insert(stat, map); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); //输出 try { response.getWriter().print(src); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } public void SaveFileFromInputStream(InputStream inputStream,String path,String saveFilename) throws IOException{ FileOutputStream outputStream = new FileOutputStream(path+"/"+saveFilename); byte[] buffer = new byte[1024*1024]; int bytesum = 0; int byteread = 0; while ((byteread=inputStream.read(buffer))!=-1){ bytesum+=byteread; outputStream.write(buffer, 0, byteread); outputStream.flush(); } outputStream.close(); inputStream.close(); } }
用到的js:ajaxfileupload.js,ajaxfileupload.css, jquery.min.js
相关文章推荐
- JSP/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法
- 超级经典一套鼠标控制左右滚动图片带自动翻滚
- 用css实现图片垂直居中的使用技巧