SpringMVC之文件上传

本文介绍了使用SpringMVC进行文件上传的一种常见方法,涉及添加commons-fileupload和commons-io库,设置form表单的enctype属性,配置Spring的CommonsMultipartResolverbean以限制上传大小,以及在后端处理上传文件的关键代码。多文件上传可通过调整参数类型为MultipartFile数组实现。
摘要由CSDN通过智能技术生成

简介

SpringMVC 文件上传有多种方式实现,这里介绍一种比较常见的方式,SpringBoot 也可采取此方式实现

实现步骤

  1. 首先将commons-fileupload-1.x.jar 和 commons-io-xx.jar 这两个包添加到项目
    在这里插入图片描述
  2. 先看前端页面的配置,在form表单中添加 enctype=“multipart/form-data” 属性
<f:form method="post" action="add" modelAttribute="user" enctype="multipart/form-data">
    <table>
        <tr>
            <td>Photo:</td>
            <td><input type="file" name="attach"></td>
        </tr>
    </table>
</f:form>
  1. 在 spring-servlet.xml 配置文件中添加如下内容
<!-- 文件上传 -->	
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传文件的大小 5M -->
    <property name="maxUploadSize" value="5000000" /> 
</bean>

注意:该 bean 的 id 不能命名为其它名字,只能为 multipartResolver

  1. 如下即为上传文件的关键代码,在方法中传入request是为了得到存储上传文件的文件夹的路径 MultipartFile attach 的几个主要方法

(1) getName(),得到页面input的name属性,例如这里是 name = “attach”

(2) getOriginalFilename(),得到被上传文件的文件名

(3) getContentType(),得到被上传文件的类型

@PostMapping("/add")
public String add(User user, MultipartFile attach, HttpServletRequest request) {
    // 上传文件存储的目标文件夹
    String realPath = request.getSession().getServletContext().getRealPath("/img");
    // 要保存的文件对象
    File targetFile = new File(realPath + "/" + attach.getOriginalFilename());
    // 保存文件到目标文件夹
    FileUtils.copyInputStreamToFile(attach.getInputStream(), targetFile);
}

注意:多文件上传的话,直接修改参数为数组类型即可:MultipartFile[] attchs;当然前端的参数也要修改为

<input type="file" name="attchs" multiple="multiple">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值