首先需要在配置文件中添加配置:

    <!--配置文件的视图解析器,用于文件上传,其中ID是固定的:multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>32505856</value><!--单位:byte 上传文件大小限制为31M,31*1024*1024 -->
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>

前台代码:

        <form id="userForm" method="post"  enctype="multipart/form-data">
<div>
<label class="my_input_title">图片1:</label>
<input type="file" name="file" class="" id="" value="" placeholder="请选择图片1"/>
</div> <div>
<label class="my_input_title">图片2:</label>
<input type="file" name="file" class="" id="" value="" placeholder="请选择图片2"/>
</div>
</form>

后台压缩工具类代码:

public static void photoupload(xxx x, @RequestParam("file") CommonsMultipartFile files[],ResultJson rj){
/******************************图片上传start**********************************/
InputStream input = null;
ByteArrayOutputStream bos = null; // 获得项目的路径
//ServletContext sc = request.getSession().getServletContext(); // 上传的文件要保存到的路径
String path = ("E:/x/"+x.getxRealname()+"/"); File file = new File(path); if (!file.exists()) file.mkdirs(); for (int i = 0; i < files.length; i++) {
try {
if (!files[i].isEmpty()) {
// 获得原始文件名
String fileName = files[i].getOriginalFilename(); System.out.println(i+"原始文件名:" + fileName); bos = new ByteArrayOutputStream(); input = files[i].getInputStream(); Image image = ImageIO.read(input);
// 图片压缩
BufferedImage tag = new BufferedImage(239,127, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(image.getScaledInstance(239,127,Image.SCALE_SMOOTH),0,0,null); if (files[i].getOriginalFilename().endsWith(".jpg")) {
ImageIO.write(tag, "jpg", bos);
} else if (files[i].getOriginalFilename().endsWith(".png")) {
ImageIO.write(tag, "png", bos);
} else {
rj.setMsg("上传图片格式错误");
rj.setObj("");
rj.setSuccess(false);
} byte[] bytes = bos.toByteArray(); // 新文件名
String newFileName = UUID.randomUUID() + fileName; FileOutputStream fos = new FileOutputStream(path + newFileName);
fos.write(bytes);
input.close();
fos.close(); System.out.println("上传图片到:" + path + newFileName);
if(i==0){
x.setXPath(path + newFileName);
}else{
x.setYPath(path + newFileName);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*******************************图片上传end**************************************/
}

逻辑如上,自己可修改相关参数实现,如上即可实现图片压缩上传!

springMVC多图片压缩上传的实现的更多相关文章

  1. 三款不错的图片压缩上传插件(webuploader+localResizeIMG4+LUploader)

    涉及到网页图片的交互,少不了图片的压缩上传,相关的插件有很多,相信大家都有用过,这里我就推荐三款,至于好处就仁者见仁喽: 1.名气最高的WebUploader,由Baidu FEX 团队开发,以H5为 ...

  2. Html5+asp.net mvc 图片压缩上传

    在做图片上传时,大图片如果没有压缩直接上传时间会非常长,因为有的图片太大,传到服务器上再压缩太慢了,而且损耗流量. 思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法 ...

  3. 纯原生js移动端图片压缩上传插件

    前段时间,同事又来咨询一个问题了,说手机端动不动拍照就好几M高清大图,上传服务器太慢,问问我有没有可以压缩图片并上传的js插件,当然手头上没有,别慌,我去网上搜一搜. 结果呢,呵呵...诶~又全是基于 ...

  4. 基于vue + axios + lrz.js 微信端图片压缩上传

    业务场景 微信端项目是基于Vux + Axios构建的,关于图片上传的业务场景有以下几点需求: 1.单张图片上传(如个人头像,实名认证等业务) 2.多张图片上传(如某类工单记录) 3.上传图片时期望能 ...

  5. 基于H5+ API手机相册图片压缩上传

    // 母函数 function App(){} /** * 图片压缩,默认同比例压缩 * @param {Object} path * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照 ...

  6. 分享图片压缩上传demo,可以选择一张或多张图片也可以拍摄照片

    2016-08-05更新: 下方的代码是比较OLD的了,是通过js进行图片的剪切 旋转 再生成,效率较低. 后来又整合了一个利用native.js本地接口的压缩代码 ,链接在这 .页面中有详细的说明, ...

  7. js 图片压缩上传(base64位)以及上传类型分类

    一.input file上传类型 1.指明只需要图片 <input type="file" accept='image/*'> 2.指明需要多张图片 <input ...

  8. SpringMvc MultipartFile 图片文件上传

    spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...

  9. HTML多图片压缩上传

    本文介绍的是多张图片在前端统一压缩后再通过ajax提交给后台处理的业务,使用到的是LocalResizeIMG.js插件. 一.首先介绍项目结构 二.分享引用核心文件,这里没有分享CSS文件,因为没有 ...

随机推荐

  1. 20145202马超 《Java程序设计》第二周学习总结

    一.课后练习题目 1.D 并没有给number赋值导致出现错误. 2.A 10/3相当于10=3*3+1: 10/3=3. 3.D 4.D 很明显,byte类型的数据的话300就会出现溢出的情况. 5 ...

  2. Servlet过滤器---编码转换过滤器

    该实例用于将请求与相应的编码设置为当前网站的默认编码 java类: import java.io.IOException; import javax.servlet.Filter; import ja ...

  3. android 管理Touch事件

    The onInterceptTouchEvent() method gives a parent the chance to see any touch event before its child ...

  4. Erlang中常用的类型转换[转]

    转自: http://blog.sina.com.cn/s/blog_53a5047b01018yqv.html 例子 结果 atom_to_list(hello). "hello" ...

  5. 《Cracking the Coding Interview》——第17章:普通题——题目13

    2014-04-29 00:15 题目:将二叉搜索树展开成一个双向链表,要求这个链表仍是有序的,而且不能另外分配对象,就地完成. 解法:Leetcode上也有,递归解法. 代码: // 17.13 F ...

  6. USACO Section1.2 Transformations 解题报告

    transform解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  7. java 日期处理相关

    /** *获取指定日期 前后指定天数的 日期 * */ public static String getNewDate(String sdate, int days) throws Exception ...

  8. Day1 Toast/Menu/Intent传递数据

    ** --------------->未经允许,禁止转载<----------------** 今天是我读<第二行代码>的第一天,也是我第一次开始写CSDN博客,之前的笔记都在 ...

  9. Leetcode 664.奇怪的打印机

    奇怪的打印机 有台奇怪的打印机有以下两个特殊要求: 打印机每次只能打印同一个字符序列. 每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符. 给定一个只包含小写英文字母的字符串,你的任 ...

  10. Fomo3D代码分析以及漏洞攻击演示

    Fomo3D过去的一周内赚足了噱头,一场光明正大的"庞氏"游戏疯狂吸金,在链得得此前的报道中提到"Fomo3D的开发者,是对生态有深刻理解的现实主义者.Fomo3D鼓励黑 ...