美文网首页Java学习笔记程序员技术干货
『SpringMVC』实现文件上传功能

『SpringMVC』实现文件上传功能

作者: dejunz | 来源:发表于2016-12-28 17:21 被阅读628次

这两天个人项目,需要上传文件功能,我后台使用的SpringMVC框架进行请求转发,在此整理下功能实现过程。

想要上传文件到后台,先要通过前台表单提交文件。

<form action="<%=request.getContextPath()%>/saveArticleToDB"
            method="post" enctype="multipart/form-data" role="form">
            <div class="form-group">
                <label for="article_file">内容文件</label> <input type="file"
                    id="article_file" name="contentFile">
            </div>
            <div>
                <input type="submit" class="btn btn-default" value="保存">
            </div>

</form>
  • 特别注意,在form标签中加上了enctype="multipart/form-data"属性,设置这个属性,才可以向服务器上传文件。
    如果不写这个属性,默认的传输格式是enctype="application/x-www-form-urlencoded"

  • 使用SpringMVC框架的一个好处是,我们提交表单,只要提交数据的标签name属性对应上后台对应的实体类字段名,就可以直接在后台接受实体类,实体类中包含着提交的信息。
    但是,如果现在提交表单,你会发现在后台的Controller中接收的值全部是null,因为enctype="multipart/form-data"改变了传输细节,后台接受自然也和默认时不同。
    所以在请求转发配置文件中,需要配置

<bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>

这样SpringMVC就可以正确映射表单数据到后台实体类了。
这还需要引入两个jar包commons-fileupload-1.3.1.jarcommons-io-2.2.jar,如果使用Maven直接引入依赖:

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
</dependency>
  • 表单的数据能正常接收了,还需要接收上传的文件。
    在后台代码中,传入参数再加上MultipartFile,这就是发送到服务器的文件,比如:
public ModelAndView articleList(MultipartFile contentFile, HttpServletRequest request,Article article) {}

其中MultipartFile参数名称,也要和前台name对应,这个类里有各种操作文件的方法,根据需要自行查询API即可。

如此就完成了上传文件到后台的功能。

<br /><br />


文章内容为个人理解,如有错误欢迎指出。

邮箱:CodingDjz@126.com

相关文章

网友评论

    本文标题:『SpringMVC』实现文件上传功能

    本文链接:https://www.haomeiwen.com/subject/ribyvttx.html