SpringMVC上传图片并压缩及剪切demo
/**
*
*/
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
SpringMVC上传图片并压缩及剪切demo的更多相关文章
- 利用webuploader插件上传图片文件,完整前端示例demo,服务端使用SpringMVC接收
利用WebUploader插件上传图片文件完整前端示例demo,服务端使用SpringMVC接收 Webuploader简介 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...
- 分享图片压缩上传demo,可以选择一张或多张图片也可以拍摄照片
2016-08-05更新: 下方的代码是比较OLD的了,是通过js进行图片的剪切 旋转 再生成,效率较低. 后来又整合了一个利用native.js本地接口的压缩代码 ,链接在这 .页面中有详细的说明, ...
- 160920、springmvc上传图片不生成临时文件
springMVC上传图片时候小于10k不会再临时目录里面生成临时文件,需要增加一个配置 <property name="maxInMemorySize" value=&qu ...
- SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html
SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...
- SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片
SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片 在上一篇文章中,我们介绍了< SpringMVC上传图片的常规上传方法 >.本文接着第一 ...
- SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest
原文地址:https://blog.csdn.net/chenchunlin526/article/details/70945877 SpringMVC上传图片总结(1)---常规方法进行图片上传,使 ...
- springmvc上传图片到Tomcat虚拟目录
一.简介 通过把文件上传到tomcat的虚拟目录,实现代码和资源文件分开. 二.环境 spring+springmvc+mybatis 三.代码实现 1.导入文件上传的jar <dependen ...
- springmvc上传图片并显示图片--支持多图片上传
实现上传图片功能在Springmvc中很好实现.现在我将会展现完整例子. 开始需要在pom.xml加入几个jar,分别是: <dependency> <groupId>comm ...
- php图片水印添加,压缩,剪切的封装类
php对图片文件的操作主要是利用GD库扩展.当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码.当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有 ...
随机推荐
- visual filters 滤镜 ie
滤镜ie9开始就废弃了,用来对ie4-8实现一些多媒体动画之类的效果.可以添加到标准的HTML控件上,例如text,图片 包含:1.界面滤镜 (Procedural Surfaces)2.静态滤 ...
- vue初级学习--控制台创建vue项目
一.导语 困困的我,好想睡啊,但还是敲下这边有的没的的笔记吧 二.正文 1.输入 vue list 可查看此环境下,vue能创建的项目模板 没将webpack.vue-route啃精了的话,老实用we ...
- 使用Docker运行Microsoft SQL Server 2017
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText.在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-comp ...
- js实现本地时间同步
HTML代码 <html> <head> <title>时间</title> <meta charset="utf-8"> ...
- 第一章 Linux系统介绍与环境搭建准备
1.操作系统: Operating System,简称OS,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心. 操作系统就是处于用户与计算机系统硬件之间用于传递信息的系统程序软件. ...
- 实现基于LVS负载均衡集群的电商网站架构
背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...
- socket阻塞IO流程图
单线程 多线程
- C#配合利用XML文件构建反射表机制
在设计程序时,无论是界面或是后台代码,我们通常都想留给用户一个较为简单的接口.而我在参与封装语音卡开发函数包的时候,发现各种语音卡的底层函数的接口都是各种整形变量标记值,使用起来极为不变.于是就理解了 ...
- 最简单的optparse模块的用法
optparse模块是python自带的模块,可用于处理命令行 #!/usr/bin/env python # -*- coding: utf-8 -*- """ __a ...
- Python 函数返回值
本章详细介绍 返回值: 0x 00 返回值简介 0x 01 指定返回值与隐含返回值 0x 02 return 语句位置与多条 return 语句 0x 03 返回值类型 0x 04 函数嵌套 0x 0 ...