SpringMVC-文件上传

文件上传客户端表单需要满足:

表单项type=“file”

表单的提交方式是post

表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data”


实现步骤

1、添加依赖
2、配置解析器
3、创建表单
4、后台实现


添加依赖

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.3</version>
        </dependency>

配置解析器

<!--    配置文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--        最大上传文件大小-->
        <property name="maxUploadSize" value="5000000"></property>
        <!--        默认文件编码-->
        <property name="defaultEncoding" value="UYF-8"></property>
    </bean>

创建表单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="${pageContext.request.contextPath}/seventeen" method="post" enctype="multipart/form-data">
    <input type="text" name="username"><br/>
    <input type="file" name="upload"><br/>
    <input type="submit" value="提交">
</form>


</body>
</html>

后台实现

@RequestMapping(value="/seventeen")
    @ResponseBody
//    这里方法中的形参名需要跟表单中<input>控件中的name相同
    public void test17(String username,MultipartFile upload){
//        将上传的文件进行保存
//        获得上传文件的名称,这里的fileNnme和username是不同的,username是上传文件时自命名的,fileName是文件本来的名字
        String fileName = upload.getOriginalFilename();//获得文件名称
        try {
            upload.transferTo(new File("/Users/liuliu/Desktop/测试文件夹/"+fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
原文地址:https://www.cnblogs.com/lyd447113735/p/14409226.html