文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载、邮件附件的上传和下载等。
接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解。
一.文件上传
多数文件上传都是通过表单形式提交给后台服务器的,因此,要实现文件上传功能,就需要提供一个文件上传的表单,而该表单必须满足以下3个条件:
1)form表单的method属性设置为post
2)form表单的enctype属性设置为multipart/form-data
3)提供<input type=”file” name=”filename” multiple=”multiple” />的文件上传输入框。
文件上传表单的实例代码如下:
<form action="uploadUrl" method="post" enctype="multipart/form-data"> <input type="file" name="filename" multiple="multiple" /> <input type="submit" value="文件上传" /> </form>
Spring MVC为文件上传提供了直接的支持,这种支持是通过MultipartResolver(多部件解析器)对象实现的。MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipartResolver来完成文件上传工作。在Spring MVC中使用MultipartResolver对象非常简单,只需要在配置文件中定义MultipartResolver接口的Bean即可,其具体配置方式如下:
<bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”> <!-- 设置请求编码格式,必须与JSP中的pageEncoding属性一致 --> <property name=”defaultEncoding” value=”UTF-8” /> <!-- 设置允许上传文件的最大值(2MB),单位为字节 --> <property name=”maxUploadSize” value=”2097152” /> </bean>
通过<property>元素可以对文件解析类CommonsMultipartResolver的如下属性进行配置。
1)maxUploadSize:上传文件最大长度(以字节为单位)
2)maxInMemorySize:缓存中的最大尺寸
3)defaultEncoding:默认编码格式
4)resolverLazily:推迟文件解析,以便在Controller中捕获文件大小异常
注:在配置CommonsMultipartResolver时必须指定该Bean的id为multipartResolver
需要导入支持文件上传的相关JAR包,通过Apache官网地址“http://commons.apache.org/”下载(进入该网址后,在Apache Conmmons Proper下方列表的Components列中找到FileUpload和IO,单击链接后,即可在打开页面找到下载链接)具体如下:
1)commons-fileupload-1.3.2.jar
2)commons-io-2.5.jar
当完成页面表单和文件上传解析器的配置后,在Controller中编写文件上传的方法即可实现文件上传。文件上传的方法代码如下:
@Controller public class FileUploadController { @RequestMapping("fileUpload") public String handleFormUpload(@RequestParam("name") String name,@RequestParam("filename") MultipartFile file,...) { if(!file.isEmpty()) { //具体的执行方法 ... return "uploadSuccess";//跳转到成功页面 } return "uploadFailure";//跳转到失败页面 } }
在上述代码中,包含一个MultipartFile接口类型的参数file,上传到程序中的文件就是被封装在该参数中的。org.springframework.web.multipart.MultipartFile接口中提供了获取上传文件、文件名称等方法,这些方法及说明如下表01所示:
原文地址:https://www.cnblogs.com/ldebug/p/9525387.html