图片上传功能(EasyUI前台框架+SSM框架)

文件上传步骤:

* 1.采用文件正确的接收方式(修改3处配置文件/接口类型等)

* 2.判断是否为一个图片,0表示无异常,1代表异常(jpg|gif|png)

* 3.判断是不是一个“正经”的图片,判断是否有宽度和高度

* 4.编辑磁盘目录,D:/jtphoto/images/yyyy/MM/dd/hh/mm

* 5.编辑相对路径,url:image.jt.com/images/yyyy/MM/dd/hh/mm

* 6.保存文件

 

EasyUI前台请求:

//编辑器参数
kingEditorParams : {
    filePostName  : "uploadFile",
    uploadJson : '/pic/upload',
    dir : "image"
},

Controller:  

 1 package com.jt.manage.controller;
 2 
 3 import java.awt.image.BufferedImage;
 4 import java.io.File;
 5 import java.io.IOException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Date;
 8 
 9 import javax.imageio.ImageIO;
10 
11 import org.apache.log4j.Logger;
12 import org.springframework.stereotype.Controller;
13 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.ResponseBody;
15 import org.springframework.web.multipart.MultipartFile;
16 
17 import com.jt.common.vo.PicUploadResult;
18 
19 @Controller
20 public class FileUploadController {
21     
22     private static final Logger logger = Logger.getLogger(FileUploadController.class);
23     /**
24      * 文件上传步骤
25      * 1.采用文件正确的接收方式(修改3处配置文件/接口类型等)
26      * 2.判断是否为一个图片,0表示无异常,1代表异常(jpg|gif|png)
27      * 3.判断是不是一个“正经”的图片,判断是否有宽度和高度
28      * 4.编辑磁盘目录,D:/jtphoto/images/yyyy/MM/dd/hh/mm
29      * 5.编辑相对路径,url:image.jt.com/images/yyyy/MM/dd/hh/mm
30      * 6.保存文件
31      * @param uploadFile
32      * @return
33      */
34     
35     @RequestMapping("/pic/upload")
36     @ResponseBody
37     public PicUploadResult fileUpload(MultipartFile uploadFile){
38         
39         PicUploadResult picload = new PicUploadResult();
40         
41         //获取图片名
42         String fileName = uploadFile.getOriginalFilename();
43         
44         //截取图片后缀
45         String suff = fileName.substring(fileName.lastIndexOf("."));
46         
47         //判断是否是图片
48         if(!(suff.matches(".(jpg||gif||png)"))){   //不是个图片
49             picload.setError(1);
50             logger.error("~~~ 您上传的不是个图片");
51             return picload;
52         }
53         
54         //判断上传的图片是不是个“正确”的图片
55         try {
56             BufferedImage bufferedImage = ImageIO.read(uploadFile.getInputStream());
57             
58             //获取图片的宽高
59             int width = bufferedImage.getWidth();
60             int height = bufferedImage.getHeight();
61             picload.setWidth(width+"");
62             picload.setHeight(height+"");
63             
64             //编辑路径
65             String localPath = "D:/jtphoto/images/";
66             String urlPath = "http://image.jt.com/images/";
67             String dataPath = new SimpleDateFormat("yyyy/mm/dd/hh/mm").format(new Date());
68             
69             //拼接路径
70             localPath += dataPath+uploadFile.getOriginalFilename();
71             urlPath += dataPath+uploadFile.getOriginalFilename();
72             
73             File file = new File(localPath);
74             if(!file.exists()){
75                 //文件不存在时创建多个文件
76                 file.mkdirs();
77             }
78             
79             //将图片写入磁盘
80             uploadFile.transferTo(file);
81             picload.setUrl(urlPath);
82 
83             return picload;
84             
85         } catch (IOException e) {
86             e.printStackTrace();
87             picload.setError(1);
88             logger.error("~~~ 您上传不是个正规的图片");
89             return picload;
90         }
91 
92         
93     }
94     
95 }

PicUploadResult 对象:
 1 package com.jt.common.vo;
 2 
 3 public class PicUploadResult {
 4     private Integer error=0;        //图片上传错误不能抛出,抛出就无法进行jsp页面回调,所以设置这个标识,0表示无异常,1代表异常
 5     private String url;                //浏览器能够解析的具体页面路径。相对路径: http//image.jt/img.jpg  本地路径:存放图片路径   D:/jt-image/....
 6     private String width;
 7     private String height;
 8 
 9     public Integer getError() {
10         return error;
11     }
12 
13     public void setError(Integer error) {
14         this.error = error;
15     }
16 
17     public String getUrl() {
18         return url;
19     }
20 
21     public void setUrl(String url) {
22         this.url = url;
23     }
24 
25     public String getWidth() {
26         return width;
27     }
28 
29     public void setWidth(String width) {
30         this.width = width;
31     }
32 
33     public String getHeight() {
34         return height;
35     }
36 
37     public void setHeight(String height) {
38         this.height = height;
39     }
40     
41     
42 
43 }

 

 实现效果:

 

 

 注意: 开始上传后开始并没有回显图片,而是通过Nginx反向代理服务器技术来实现转向,由

http://image.jt.com/images/2017/07/25/15/26/57  

转向到 

D:/jtphoto/images/2017/07/25/15/26/574ed257Nebb74cec.jpg

 

posted @ 2017-07-25 19:07  大大大圣  阅读(7132)  评论(7编辑  收藏  举报