<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. iframe使用location跳转页面的问题

    iframe页面调用父级页面中的函数 parent.dofunction(); contentWindow 实例 iframe = document.getElementById("fram ...

  2. 开源ceph管理平台inkscope部署手册

    一.前情提要 关于inkscope就不做过多介绍了,就是ceph的一个开源管理控制平台,跟ceph官方的calamary以及intel的VSM差不多一类,只是各自侧重点不一样. 相对而言,因为inks ...

  3. 【原】浅谈Firefox下的js、css、图片阻塞现象(一)

    外部js文件阻塞body中的图片 以如下html为例: <!DOCTYPE HTML> <html> <head> <meta http-equiv=&quo ...

  4. 在 Visio 中录制宏

    在“开发工具”选项卡上,单击“录制宏”.(如果您看不到“开发工具”选项卡,请参阅下面的“显示‘开发工具’选项卡”.) 在“宏名”框中,键入宏名称. 在“快捷键”框中,键入与 Ctrl 键一起使用可运行 ...

  5. python 调用hive查询实现类似存储过程

    需求:数据仓库中所有表的定义结构保存到新的文件中,保存后类似下面数据,重复的数据只保留7月份即可 ****************ods_log_info*****************lid st ...

  6. VS2010断点无效

    可能的原因如下: 1. 菜单tools->Options->Debugging->General,有个Require  source files to exactly match t ...

  7. codinglife主题小修改和有意思的博客挂件

    这个主题很漂亮,不过为了迎合自己的喜好ヽ(•̀ω•́ )ゝ,修改了字号.阴影之类的小细节.同时下面还有我博客里面的两个有意思的小挂件,请向右边看(๑و•̀ω•́)و 1.主题修改:复制下面的css代码 ...

  8. 巧妙实现缺角radiogroup控制多个fragment切换和滑动

    在android开发中,用一个radiogroup控制多个fragment切换是十分常见的需求.但是如果fragment是一个ListView,如何保证滑动的时候通过缺角可以看到下面的listview ...

  9. Docker和DevOps是找工作必备技能

    根据最近的IT Jobs Watch数据,涉及Docker技术的的工作角色上升了317名次,排在500个最受追捧的IT技能第二位.无独有偶,从Rackspace最近的研究表明,Docker和DevOp ...

  10. STL"源码"剖析

    STL"源码"剖析-重点知识总结   STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略 ...