A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tannins 初级黑马   /  2019-10-16 18:21  /  1816 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一. 文件上传客户端表单三要素
1.表单项type=“file”。
2.表单提交方式post,文件大小原因。
3.表单的enctype属性是多部分表单形式enctype=“multipart/form-data”,请求正文内容就变成了多部分形式,就会有文件内容,否则只有文件名。

<form action="${pageContext.request.contextPath}/upload/quick" method="post" enctype="multipart/form-data">
    名称<input type="text" name="username"><br/>
    文件1<input type="file" name="uploadFile"><br/>
    文件2<input type="file" name="uploadFile2"><br/>
    <input type="submit" value="提交">
</form>
1
2
3
4
5
6
二. 配置文件上传所需坐标
pom.xml中导入fileupload和io坐标

commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.6
三. 配置文件上传解析器
spring-mvc.xml中配置文件上传解析器

<!--    配置文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--        上传文件编码-->
        <property name="defaultEncoding" value="UTF-8"></property>
<!--        上传文件总大小上限-->
        <property name="maxUploadSize" value="500000"></property>
<!--        单个文件大小上限-->
        <property name="maxUploadSizePerFile" value="50000000"></property>
    </bean>
1
2
3
4
5
6
7
8
9
放进mvc注解驱动

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
1
四. 编写文件上传代码
参数名称需要和表单项name对应相同
controller

@Controller
@RequestMapping("/upload")
public class UserContoller {
@RequestMapping(value = "/quick")
@ResponseBody //不跳转,将返回的值直接回写
public void save(String username,MultipartFile uploadFile,MultipartFile uploadFile2) throws IOException {
    System.out.println(username);
    System.out.println(uploadFile);
    //获取文件名称
    String filename = uploadFile.getOriginalFilename();
    uploadFile.transferTo(new File("D:\\Users\\"+filename));
    String filename2 = uploadFile2.getOriginalFilename();
    uploadFile2.transferTo(new File("D:\\Upload\\"+filename2));
        }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
当文件很多的时候,以数组的方式接收。表单的文件上传项的name值和controller参数数组名相同,就可以直接存入数组中。
表单

<form action="${pageContext.request.contextPath}/upload/quick2" method="post" enctype="multipart/form-data">
    名称<input type="text" name="username"><br/>
    文件1<input type="file" name="uploadFile"><br/>
    文件2<input type="file" name="uploadFile"><br/>
    <input type="submit" value="提交">
</form>
1
2
3
4
5
6
controller

@RequestMapping(value = "/quick2")
@ResponseBody //不跳转,将返回的值直接回写
public void save2(String username,MultipartFile[] uploadFile) throws IOException {
    System.out.println(username);
    System.out.println(uploadFile);
    for (MultipartFile multipartFile : uploadFile) {
        //获取文件名称
        String filename = multipartFile.getOriginalFilename();
        multipartFile.transferTo(new File("D:\\Upload"+filename));
    }
}
————————————————
原文链接:https://blog.csdn.net/tannins_/article/details/102580169

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马