<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上传文件的总大小不能超过80M......注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="80000000" />
</bean>
    public String uploadFile(HttpServletRequest request,
HttpServletResponse response) {
if(request instanceof MultipartHttpServletRequest){
MultipartHttpServletRequest multiReq=(MultipartHttpServletRequest) request;
String orderNum=request.getParameter("orderNum");
String fileType=request.getParameter("fileType");
Map<String, List<MultipartFile>> fileMap=multiReq.getMultiFileMap();
if(fileMap.size()>0){
for(String key:fileMap.keySet()){
List<MultipartFile> list=fileMap.get(key);
if(!list.isEmpty()){
for(int i=0;i<list.size();i++){
MultipartFile webFile= list.get(i);
String channel="web";
String uri=key+".uri";
String uripath=UploadPropertyConfigurer.getProperty(uri);
String realpath=UploadPropertyConfigurer.getProperty("image.realuri")+uripath;
String virtualpath=UploadPropertyConfigurer.getProperty("image.url")+uripath;
String fileName=webFile.getOriginalFilename();
LOGGER.info("filename:"+fileName);
Date date=new Date();
try {
if(fileName.contains(".")){
String [] s=fileName.split("\\.");
fileName=orderNum+"_"+new Date().getTime()+"."+s[1];
}
FileUtils.copyInputStreamToFile(webFile.getInputStream(), new File(realpath, fileName));
OrderFileupload record=new OrderFileupload();
record.setOrderNum(orderNum);
record.setFileuri(virtualpath);
record.setFileType(key);
record.setFilename(fileName);
record.setCreateDate(date);
record.setUploadChannel(channel);
record.setUploadUser("admin");
orderFileuploadMapper.insert(record);
LOGGER.info("上传成功,orderNum:"+orderNum+",fileType:"+request.getParameter("uri")+",fileName:"+fileName);
OrderFileuploadExample example=new OrderFileuploadExample();
example.or().andOrderNumEqualTo(orderNum);
List<OrderFileupload> listfile=orderFileuploadMapper.selectByExample(example);
Map<String,List<String>> map=new HashMap<String,List<String>>();
String ip= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
for(int j=0;j<listfile.size();j++){
OrderFileupload file=listfile.get(j);
if(map.containsKey(file.getFileType())){
map.get(file.getFileType()).add(ip+file.getFileuri()+"/"+file.getFilename());
}else{
List<String> lists=new ArrayList<String>();
lists.add(ip+file.getFileuri()+"/"+file.getFilename());
map.put(file.getFileType(), lists);
} }
ResultDto dto=new ResultDto();
dto.setResultCode(Constant.CODE_ENUM.SUCCESS.code);
dto.setResultDetail(map);
return om.writeValueAsString(dto);
} catch (Exception e) {
File file=new File(realpath, fileName);
if(file.exists()){
FileUtils.deleteQuietly(file);
}
OrderFileuploadExample example=new OrderFileuploadExample();
example.or().andCreateDateEqualTo(date).andOrderNumEqualTo(orderNum);
orderFileuploadMapper.deleteByExample(example);
LOGGER.error("上传异常:",e);
continue;
}
}
}
}
}
LOGGER.info("上传失败,orderNum:"+orderNum+",fileType:"+request.getParameter("uri"));
return "0";
}
return "1"; }

springmvc附件上传核心代码的更多相关文章

  1. [html5+java]文件异步读取及上传核心代码

    html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3 ...

  2. Springmvc file多附件上传 显示 删除操作

    之前项目需求要做一个多附件上传 并显示上传文件 带删除操作 一筹莫展之际搜到某个兄弟发的博客感觉非常好用被我copy下来了此贴算是改良版 再次感谢(忘记叫什么了时间也有点久没有历史记录了)先上图 基于 ...

  3. java 附件上传、下载前后端代码

    前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...

  4. 阶段3 3.SpringMVC·_05.文件上传_4 文件上传之Springmvc方式上传代码

    后台提供新的方法,上传的方法复制一份传统上传的代码.改名为fileupload2 配置解析器 名字必须叫做myltipartResolver 里面可以配置一些属性,例如上传文件的大小等. 文件大小 最 ...

  5. 使用plupload做一个类似qq邮箱附件上传的效果

    公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可 ...

  6. SpringMVC文件上传下载(单文件、多文件)

    前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...

  7. asp.net结合uploadify实现多附件上传

    1.说明 uploadify是一款优秀jQuery插件,主要功能是批量上传文件.大多数同学对多附件上传感到棘手,现将asp.net结合uploadfiy如何实现批量上传附件给大家讲解一下,有什么不对的 ...

  8. 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  9. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径

    本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...

随机推荐

  1. Alisha’s Party(队列)

    Alisha’s Party Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  2. sass 语法实例

    sass基本语法 1.定义一个变量,变量定义以$开头,以冒号分隔开. $blue:#1875e7; div{ color:$blue; } 编译之后的css代码: div { color: #1875 ...

  3. MSSQL 当前会话设置隔离级别与查询

    之前因为MySQL没有with(nolock)这种写法,于是想设置隔离级别,结果被坑. 直觉以为和MSSQL一样只要打set transaction isolation level xxx 就能搞定 ...

  4. Ubuntu 14.04 静态IP设置

    1. 编辑/etc/network/interfaces vim /etc/network/interfaces 2.将以下五项添加到/etc/network/interfaces中 Static d ...

  5. isalpha函数,判断字符是否是字母

    头文件:<iostream> or  <cctype>  在c语言中<ctype.h> 功能:判断一个字符是否是英文字符,是大写返回1,是小写返回2,不是英文字符返 ...

  6. BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )

    dp(i, j, k)表示考虑了前i行, 放了0个炮的有j列, 放了1个炮的有k列. 时间复杂度O(NM^2) -------------------------------------------- ...

  7. [C#参考]锁定lock

    Lock关键字解释: lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁. 下面的示例包含一个 lock 语句. lock 关键字可确保当一个线程位于代码的临界区 ...

  8. Spring——AOP(面向切面编程)@AspectJ注解方式

    一.什么是AOP? AOP: (Aspect Oriented Programming)即面向切面编程. 试想这样的场景:项目中需要在业务方法执行完打印日志记录.最笨的办法就是在每个方法核心业务执行完 ...

  9. codeforces 149E . Martian Strings kmp

    题目链接 给一个字符串s, n个字符串str. 令tmp为s中不重叠的两个连续子串合起来的结果, 顺序不能改变.问tmp能形成n个字符串中的几个. 初始将一个数组dp赋值为-1. 对str做kmp, ...

  10. codeforces 589F. Gourmet and Banquet 二分+网络流

    题目链接 给你n种菜, 每一种可以开始吃的时间不一样, 结束的时间也不一样. 求每种菜吃的时间都相同的最大的时间.时间的范围是0-10000. 看到这个题明显可以想到网络流, 但是时间的范围明显不允许 ...