<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. UVA 12075 - Counting Triangles(容斥原理计数)

    题目链接:12075 - Counting Triangles 题意:求n * m矩形内,最多能组成几个三角形 这题和UVA 1393类似,把总情况扣去三点共线情况,那么问题转化为求三点共线的情况,对 ...

  2. My blog

    欢迎啦……嘿嘿 http://blog.csdn.net/zuguodexiaoguoabc http://blog.sina.com.cn/u/3914181130

  3. Struts学习之流程汇总

    struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的 ...

  4. 全局变量,extern和static以及命名空间的区别

    全局变量,extern和static以及命名空间的区别        全局变量只是在声明它的文件中有效,假如在另一个文件中声明定义了一个相同名称的全局变量,则在后续使用这两个变量的时候会产生名字上的冲 ...

  5. Models——英语学习小技巧之四

    Models  are very important, here model means role model, is kind of like a hero. It's  someone that ...

  6. 使用mybatis查询数据,按特定顺序排序

    有如下表table_people id          name 1          dwyane 2          james 3          paul 4          bosh ...

  7. poj 3469 Dual Core CPU 最小割

    题目链接 好裸的题....... 两个cpu分别作为源点和汇点, 每个cpu向元件连边, 权值为题目所给的两个值, 如果两个元件之间有关系, 就在这两个元件之间连边, 权值为消耗,这里的边应该是双向边 ...

  8. jdk outMemory内存溢出

    参数的含义: -vmargs -Xms256M -Xmx768M -Xss256k -XX:PermSize=256M -XX:MaxPermSize=768M -vmargs 说明后面是vm的参数 ...

  9. cmd dos 下 无法显示中文

    在做程序开发的时候经常需要在使用命令行进行操作, dos环境本身是不支持中文的,有时候中文编码的问题就像苍蝇一样讨厌,下面提供几种常用的手段解决win7环境下中文显示乱码的问题: 方法一: 修改注册表 ...

  10. [js - 算法可视化] 汉诺塔(Hanoi)演示程序

    前段时间偶然看到有个日本人很早之前写了js的多种排序程序,使用js+html实现的排序动画,效果非常好. 受此启发,我决定写几个js的算法动画,第一个就用汉诺塔. 演示地址:http://tut.ap ...