最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库。因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例。
<>强基础框架强>
之前曾经介绍过一个最简单的spring mvc的项目如何搭建,传送门在这里。
这次就基于这个工程,继续实现上传下载的小例子。需要做下面的事情:
1增加索引。html,添加形式提交文件
2引入commons-fileupload、commons-io jxl等工具包
3创建上传下载接口
4注入multipartResolver bean
5在上传中使用HttpServletRequest获取文件流,通过工作簿进行解析
6在下载中通过HttpServerResponse返回文件流,实现下载
<强>页面强>
页面很简单,其实就是一个表单标签,需要注意的是:
-
<李>形式中enctype=" multipart/格式”李>
<李>操作指定访问的url李>
<李>输入中需要设置的名字属性,这样后端才能获取到文件对象李>
& lt;形式作用="形式" action="/上传" method=" POST " enctype=岸嗖糠?格式”比; 祝辞& lt; div class="形式的班级”; & lt;标签="文件"在上传文件& lt;/label> & lt;输入类型="文件" id="文件" name="文件"比; & lt;/div> & lt;按钮类型=疤峤弧眂lass=癰tn btn-default祝辞提交& lt;/button> & lt;/form>
<强>引入commons-fileupload, jxl等工具包强>
涉及的jar包有:
-
<李> commons-fileupload用于获取上传文件李>
<李> jxl用于解析excel李>
& lt; !——springframework开始比; & lt; dependency> & lt; groupId> org.springframework & lt; artifactId> spring-webmvc & lt; version> 4.2.4.RELEASE & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework & lt; artifactId> spring-context & lt; version> 4.2.4.RELEASE & lt;/dependency> & lt; dependency> & lt; groupId> javax.servlet & lt; artifactId> javax.servlet-api & lt; version> 4.0.0-b01 & lt;/dependency> & lt; !——https://mvnrepository.com/artifact/commons-io/commons-io——比; & lt; dependency> & lt; groupId> commons-io & lt; artifactId> commons-io & lt; version> 2.5 & lt;/version> & lt;/dependency> & lt; !——https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload——比; & lt; dependency> & lt; groupId> commons-fileupload & lt; artifactId> commons-fileupload & lt; version> 1.3.2 & lt;/dependency> & lt; !——https://mvnrepository.com/artifact/jexcelapi/jxl——比; & lt; dependency> & lt; groupId> jexcelapi & lt; artifactId> jxl & lt; version> 2.6 & lt;/version> & lt;/dependency>
<强> Xml的配置强>
在web . xml中需要配置默认的访问页面,因为之前已经设置过拦截的请求是/,因此如果不设置所有的静态页面都会被拦截下来。
& lt; welcome-file-list> & lt; welcome-file> index.html & lt;/welcome-file-list>
在春天的配置文件中,加入CommonsMultipartResolver的bean。
& lt; bean id=癿ultipartResolver”类=皁rg.springframework.web.multipart.commons.CommonsMultipartResolver”比; & lt; !——设置最大上传size100MB祝辞 & lt;属性名=癿axUploadSize”比; & lt; value> 104857600 & lt;/value> & lt;/property> & lt;属性名=癿axInMemorySize”比; & lt; value> 4096 & lt;/value> & lt;/property> & lt;/bean>
<强>上传代码强>
@RequestMapping(“上传”) 公共空间上传(HttpServletRequest请求,HttpServletResponse响应)抛出IOException BiffException WriteException { MultipartHttpServletRequest mRequest=(MultipartHttpServletRequest)请求; MultipartFile文件=mRequest.getFile(“文件”); 工作簿工作簿=Workbook.getWorkbook (file.getInputStream ());//遍历表页 Arrays.stream (workbook.getSheets ()) .forEach(表→{ int大?sheet.getRows (); for (int i=0;i基于Spring Mvc实现的Excel文件上传下载示例