文件上传步骤:
* 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
转载于:https://www.cnblogs.com/tongxuping/p/7235956.html