JAVA利用SpringMVC实现图片的上传及回显

原理:上传图片,记录图片保存的路径,把图片的宽高,及路径返回前台页面,实现图片的回显

/**
 * 文件上传的类
 * 
 *  {"error":0,
 *  "url":"图片的保存路径",
 *  "width":图片的宽度,
 *  "height":图片的高度}
 * @author Administrator
 *
 */
public class PicUploadResult {
	
    private Integer error=0;		//0表示无异常,1代表异常
    private String url;
    private String width;
    private String height;

    public Integer getError() {
        return error;
    }

    public void setError(Integer error) {
        this.error = error;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getWidth() {
        return width;
    }

    public void setWidth(String width) {
        this.width = width;
    }

    public String getHeight() {
        return height;
    }

    public void setHeight(String height) {
        this.height = height;
    }
    
    

}

 图片上传service方法

public PicUploadResult uploadFile(MultipartFile uploadFile) {
		PicUploadResult picUploadResult=new PicUploadResult();
		//1.判断是否为图片
		String fileName=uploadFile.getOriginalFilename();
		//不是图片
		if(!fileName.matches("^.*(png|jpg|gif|jpge)$")){
			//不是图片类型
			picUploadResult.setError(1);
			return picUploadResult;
		}
		//2.判断是否为恶意程序
		try {
			BufferedImage bufferedImage=
					ImageIO.read(uploadFile.getInputStream());
			//2.1获取宽高
			int height=bufferedImage.getHeight();
			int width=bufferedImage.getWidth();

			if(height==0||width==0){
				//表示不是图片
				picUploadResult.setError(1);
				return picUploadResult;
			}
			
		//3.由于文件个数多,采用分文件存储
		String dateDir=
				new SimpleDateFormat("yyyy/MM/dd")
						.format(new Date());
	
		//生成对应的文件夹
		String dirPath=filePath+dateDir;
		//判断是否存在
		File file=new File(dirPath);
		if(!file.exists()){
			//生成文件夹
			file.mkdirs();
		}
		//防止图片上传量过大引起的重名问题
		String  uuidName=
				UUID.randomUUID()
					.toString().replace("-", "");	
		String  randomNum=((int)(Math.random()*99999))+"";
		//获取文件后缀名
		String fileType=
				fileName.substring(
						fileName.lastIndexOf("."));
		String prefix=fileName.substring(0, fileName.lastIndexOf("."));
		//路径拼接(文件真实的存储路径)
		String  fileDirPath=
				dirPath+"/"+prefix+uuidName+randomNum+fileType;
		
		//文件上传
		uploadFile.transferTo(new File(fileDirPath));
		
		//生成正确的页面回显信息
		picUploadResult.setHeight(height+"");
		picUploadResult.setWidth(width+"");
		/**1.本地磁盘路径
		 * 2.网络虚拟路径
		 */
		//String  urlDir="http://image.jt.com/";
		String urlPath=urlDir+dateDir+"/"+prefix+uuidName+randomNum+fileType;
		picUploadResult.setUrl(urlPath);
		
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return picUploadResult;
	}

猜你喜欢

转载自blog.csdn.net/weixin_42160445/article/details/82286892