上传图片功能

转载:http://blog.sina.com.cn/s/blog_4c925dca0101kdar.html

上传图片页面代码:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 8 <html>
 9     <head>
10         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11         <title>修改信息</title>
12         <script type="text/javascript" src="<%=basePath %>resources/skin/js/jquery-1.7.1.js"></script>    
13         
14         
15     </head>
16     <body>
17         <div id="d1" >
18         <form action="updateSave1" method="post" enctype="multipart/form-data">
19             头像:<img id="view" width="100" height="100"/>
20             <p>上传头像:<input type="file" name="file" id="portrait" value="上传"  onchange="change();" /></p>
21             
22         
23         <div>
24             <input type="submit" value="确认修改" id="update1"/>
25             
26         </div>
27         </form>
28         </div>
29     </body>
30     <script type="text/javascript">
31 //该JS方法主要处理 图片显示  不涉及上传 仅仅是预览
32     function change() {
33         var pic = document.getElementById("view");
34         var file = document.getElementById("portrait");
35         var ext = file.value.substring(file.value.lastIndexOf(".") + 1)
36                 .toLowerCase();
37         var isIE = navigator.userAgent.match(/MSIE/) != null, isIE6 = navigator.userAgent
38                 .match(/MSIE 6.0/) != null;
39         if (isIE) {
40             file.select();
41             var reallocalpath = document.selection.createRange().text;
42             if (isIE6) {
43                 pic.src = reallocalpath;
44             } else {
45                 pic.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image',src=""
46                         + reallocalpath + "")";
47                 pic.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';
48             }
49         } else {
50             var file = file.files[0];
51             var reader = new FileReader();
52             reader.readAsDataURL(file);
53             reader.onload = function(e) {
54                 var pic = document.getElementById("view");
55                 pic.src = this.result;
56             };
57         }
58     }
59 </script>
60 </html>

该页面主要主要在form表单上加上   enctype="multipart/form-data" 这个参数

后台页面代码:

 1 @RequestMapping(value = "admin/login/updateSave1", method = RequestMethod.POST)
 2     public String updateSave1(HttpSession session, HttpServletRequest request,MultipartFile file) {
 3         String path = request.getSession().getServletContext().getRealPath("upload");  
 4  //       String fileName = file.getOriginalFilename();
 5         //创建一个图片名字
 6         String fileName = new Date().getTime()+".jpg";   
 7         File targetFile = new File(path, fileName);
 8         //判断这个文件存不存在,如果不存在就创建
 9         if(!targetFile.exists()){  
10             targetFile.mkdirs();  
11         }  
12         User user = new User();
13       //保存  
14         String portrait = request.getContextPath()+"/upload/"+fileName;
15         try {  
16             file.transferTo(targetFile);
17             user.setPortrait(portrait);
18         } catch (Exception e) {  
19             e.printStackTrace();  
20         }  
21        
22         userService.updateSave(user);
23         return "admin/login/select";
24     }
原文地址:https://www.cnblogs.com/liaoyanglong/p/6371255.html