博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC上传图片并压缩及剪切demo
阅读量:4969 次
发布时间:2019-06-12

本文共 4323 字,大约阅读时间需要 14 分钟。

/** *  */package com.up.controller;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import com.up.constant.SystemConstants;import com.up.util.FileCopy;import com.up.util.ImageUtils;import com.up.util.OperateImage;import com.up.util.UploadUtil;/** * @author hu.shiguo * @time 2014-3-14下午2:53:15 * @description * @version */@Controller@RequestMapping(value="upload")public class UploadFileController {    	/**	 * 图片上传	 * @param request	 * @param response	 * @param myFile	 */	@RequestMapping(value = "uploadFile")	public void upload(HttpServletRequest request, HttpServletResponse response, 			@RequestParam MultipartFile myFile)	{		//要删除文件的所在子文件夹		String fileFolderpath = request.getParameter("fileFolderpath");  		//工程文件夹		String projectPath  = SystemConstants.WEB_ROOT;		File files = new File(projectPath);		//上传文件保存文件夹		String uploadFilePath = files.getParent()+File.separator; 		//String uploadFilePath =files.getPath()+File.separator + "uploadFile";  		//上传实际路径		String basePath = uploadFilePath+"uploadFile"+File.separator+"up"+File.separator +fileFolderpath;  		//未压缩的图片上传至暂时文件夹		String tempPath = uploadFilePath+"uploadFile"+File.separator+"up"+File.separator +SystemConstants.URL_TEMP; 		InputStream is = null ;		FileOutputStream os = null;		if (!new File(basePath).isDirectory()) 		{			new File(basePath).mkdirs();		}		try		{			//获取上传文件旧名			String name = myFile.getOriginalFilename();			//获取后缀名			String last = name.substring(name.lastIndexOf(".")+1); 			//上传路径--压缩前			String org = "";			File file = new File(tempPath, System.currentTimeMillis() + new Random(50000).nextInt() + "."+last);		    is = myFile.getInputStream();			os = new FileOutputStream(file); 			//上传			UploadUtil.copyFile(is, os);  			//获取未压缩图片上传后的绝对路径===在暂时文件夹文件夹中 			org = file.getAbsolutePath();			System.out.println("org=="+org);			//压缩后图片存储路径 			String dest = System.currentTimeMillis() + new Random(50000).nextInt() + "."+last;			System.out.println("dest=="+dest);			//System.out.println("file.getName():"+file.getName());  			//方法一:进行压缩 			boolean bol1 = ImageUtils.resize(org, basePath+File.separator+dest, 200, 200);  			//方法二:进行剪切			//返回压缩后的图片名称到前端展示 			//先缩放,再裁剪			boolean bol2 = false;			if(bol1){				OperateImage o = new OperateImage(basePath+File.separator+dest, 0, 0, 200, 200);     				o.setSubpath(basePath+File.separator+dest);				o.setImageType(last);  				bol2 = o.cut();   			} 			if(bol1||bol2){ 				System.out.println("---------"+dest); 				response.getWriter().write(dest);   			}else{				FileCopy fc = new FileCopy();				//由于没有压缩。所以将未压缩的文件从暂时文件里复制至目标路径下  				fc.doMoveFile(file.getName(), tempPath, basePath);				response.getWriter().write(file.getName()); 			}		}		catch (Exception e) 		{			e.printStackTrace();		}finally{			try{  				if (os != null) {					os.close();				}				if (is != null) {					is.close();				}			} catch (Exception e) {					os = null;					is = null;			}		}	}			/**	 * 删除上传图片	 * @param request	 * @param response	 * @param myFile	 */	@RequestMapping(value = "deleteFile.html") 	public void  deleteFile(HttpServletRequest request,			HttpServletResponse response)	{		String fileFolderpath = request.getParameter("fileFolderpath")+"/"; 		String fileName = request.getParameter("fileName");		//工程文件夹 		String webPath  = SystemConstants.WEB_ROOT;		File files = new File(webPath);		//上传文件的文件夹		String uploadFilePath = files.getParent()+File.separator; 		//String uploadFilePath =files.getPath()+File.separator + "uploadFile";  		String basePath = uploadFilePath+SystemConstants.URL_UPLOADFILE+fileFolderpath+fileName; 		File file = new File(basePath);		if (file.isFile() || file.isDirectory()) 		{			file.delete();		}	  String str = "true";	  response.setContentType("text/xml;charset=UTF-8"); 	  response.setCharacterEncoding("UTF-8");	  r

转载于:https://www.cnblogs.com/zsychanpin/p/6794898.html

你可能感兴趣的文章
国外整理的一套在线渗透测试资源合集
查看>>
滚动条插件Nicescroll用法
查看>>
设计模式17---享元模式
查看>>
Java 网络编程----基本概念
查看>>
基于上下文的访问控制
查看>>
暑期留校之iOS学习笔记
查看>>
jQuery 选择器
查看>>
Windows API 实现查找、删除任意类型的文件_VERSION20120612(vc6.0调试通过)(2012.6.12最新修改)...
查看>>
sql server清空日志文件
查看>>
seekbar 样式自定义
查看>>
bzoj1798: [Ahoi2009]Seq 维护序列seq
查看>>
[Effective JavaScript 笔记] 第14条:当心命名函数表达式笨拙的作用域
查看>>
ES6__class 的继承等相关知识案例
查看>>
room内部线宽:4mil , 外部线宽设置为6mil.从room内部走线到外。bgaroom:违反线宽6mil的规则????...
查看>>
tomcat启动时窗口一闪的解决办法
查看>>
day1-opencv环境搭建
查看>>
并发编程注意的问题
查看>>
angular--ngResource的简单使用
查看>>
android本地数据库,微信数据库WCDB for Android 使用实例
查看>>
如何快速三个月成为一个领域的高手的四个方法
查看>>