1.普通方式(没有配置multipartResolver)
/** * @Description 上传文件 * @author zhangyd * @date 2015年12月1日 下午3:02:23 * @return * @throws Exception */ @RequestMapping("/uploadFile") @ResponseBody public Object uploadFile(HttpServletRequest request) throws Exception { String path = LoadSystemProperties.UPLOAD_FILES_PATH; File file = new File(path); if (!file.exists()) { file.mkdirs(); } //获取图片url地址 String fileName = "";// 文件名称 /**上传文件处理内容**/ DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setHeaderEncoding("UTF-8"); // 处理中文问题 sfu.setSizeMax(1024 * 1024); // 限制文件大小 try { List<FileItem> fileItems = sfu.parseRequest(request); // 解码请求 for (FileItem fi : fileItems) { String name = fi.getName(); if (name == null) { continue; } fileName = UUID.randomUUID() + name.substring(name.lastIndexOf("."), name.length()); fi.write(new File(path, fileName)); } } catch (Exception e) { e.printStackTrace(); } //获取图片url地址 return path + "\\" + fileName; }
注:以上使用必须是在没有配置multipartResolver的前提下,配置multipartResolver后将会获取不到
这个问题只需要了解下SpringMVC中CommonsMultipartResolver的处理源码就会明白
/** * Parse the given servlet request, resolving its multipart elements. * @param request the request to parse * @return the parsing result * @throws MultipartException if multipart resolution failed. */ protected MultipartParsingResult parseRequest(HttpServletRequest request) throws MultipartException { String encoding = determineEncoding(request); FileUpload fileUpload = prepareFileUpload(encoding); try { List<FileItem> fileItems = ((ServletFileUpload) fileUpload).parseRequest(request); return parseFileItems(fileItems, encoding); } catch (FileUploadBase.SizeLimitExceededException ex) { throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex); } catch (FileUploadException ex) { throw new MultipartException("Could not parse multipart servlet request", ex); } }
因为,配置完CommonsMultipartResolver之后,实际上SpringMVC已经对当前的HttpServletRequest处理过了;因此,当再次通过sfu.parseRequest(request);// 解码请求获取请求中的文件时,就会获取不到了。
2.通过SpringMVC的multipartResolver处理器获取
注:必须配置以下内容
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <!-- 指定所上传文件的总大小不能超过100MB。注意maxUploadSize属性的限制不 是针对单个文件,而是所有文件的容量之和 --> <!-- <property name="maxUploadSize" ><value>104857600</value></property> --> <!-- <property name="uploadTempDir" value="E:\temp"></property> --> <!-- <property name="resolveLazily"></property> --> <!-- <property name="servletContext"></property> --> <!-- <property name="maxInMemorySize"></property> --> </bean>1).
public void upload(HttpServletRequest request) { // 转型为MultipartHttpRequest try { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; List<MultipartFile> fileList = multipartRequest.getFiles("file"); for (MultipartFile mf : fileList) { if (!mf.isEmpty()) { } } } catch (Exception e) { e.printStackTrace(); } }2).
/** * @param files * @return * @throws Exception * @Description 上传文件 * @author zhangyd * @date 2015年12月1日 下午3:02:23 */ @RequestMapping("/uploadFile2") @ResponseBody public Object uploadFile(@RequestParam(value = "file") MultipartFile[] files) throws Exception { String path = LoadSystemProperties.UPLOAD_FILES_PATH; File file = new File(path); if (!file.exists()) { file.mkdirs(); } for (MultipartFile fi : files) { path = FileUtil.getUploadFilePath(fi); } //获取图片url地址z return path; }
相关推荐
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
spring-web.jar(必须) :这个jar 文件包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form标签 ...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 ...
包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 18. spring-webmvc-4.1.1.RELEASE.jar 包含...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置标签库 13.9.2. form...
13.8. Spring对分段文件上传(multipart file upload)的支持 13.8.1. 介绍 13.8.2. 使用MultipartResolver 13.8.3. 在表单中处理分段文件上传 13.9. 使用Spring的表单标签库 13.9.1. 配置 13.9.2. form标签 ...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
用springmvc3基于注解方式实现的文件上传与下载,多种方式实现
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
在实现过程中,该软件采用了 Java 作为后端开发语言,结合了多种流行的开源框架和技术,比如 Spring Boot、Spring MVC、MyBatis 等,以及常用的数据库如 MySQL 或 PostgreSQL。这些框架和技术提供了稳健的基础架构,...
使用Spring MVC框架实现前后端数据交互,采用RESTful风格的API设计,提高了系统的灵活性和易用性。 结合MyBatis框架进行数据持久化操作,实现了与数据库的交互,包括用户信息、音乐信息、评论信息等数据的管理和操作...
网络办公系统是一个基于Java的Web应用程序,采用SSM(Spring + Spring MVC + MyBatis)框架实现后端逻辑,并结合JSP(JavaServer Pages)技术构建前端页面。该系统旨在帮助企业实现员工在线办公、协同工作和信息共享...
6.5.2struts2文件上传实现方式 136 6.5.3struts2文件下载实现方式 141 本章小结 143 课后练习 144 第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2...
搜索和排序数据使用select2 ajax远程数据的分页结果发送带有附件的电子邮件模板多种语言的Web应用程序生成PDF和Excel文件使用Ajax以一种形式上传数据和文件建立和运行mvn packagejava -jar SpringBoot-0.0.1-...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...
版本管理,服务根路径工具类,文件上传工具类 1.0.10 集成ueditor在线编辑器 1.0.11 地址联动 1.0.12 Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) ...