(7)SpringMVC——实现文件的上传

1 简介

  1. Spring MVC 为文件上传提供了直接的支持,通过MultipartResolver 接口实现。
  2. Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 SpringMVC 的文件上传功能,需要在上下文中配置 MultipartResolver。
  3. Jakarta Commons FileUpload 技术实现了一个 MultipartResolver接口, 实现类是:CommonsMultipartResolver

2 上传步骤

1 导入jar包

在这里插入图片描述

2) 在SpringMVC的配置文件中配置CommonsMultipartResolver解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--设置字符集-->
    <property name="defaultEncoding" value="utf-8"></property>
    <!--设置总文件的大小-->
    <property name="maxUploadSize" value="102400"></property>
</bean>

3) 表单页面

a) enctype属性值设置为multipart/form-data
b) 上传文件的表单项的type设置为file

<h1>文件上传</h1>
<form action="${pageContext.request.contextPath}/testFileUpload" method="post" enctype="multipart/form-data">
  描述:<input type="text" name="desc"><br>
  文件:<input type="file" name="filename"><br>
  <input type="submit">
</form>

4) 处理器方法

@RequestMapping("/testFileUpload")
public String testFileUpload(@RequestParam("desc") String desc ,
                             @RequestParam("filename")MultipartFile file,HttpSession session) throws IOException {
    System.out.println("文件的描述信息是:"+desc);
    //获取文件名
    String fileName = file.getOriginalFilename();
    //获取文件的类型
    String contentType = file.getContentType();
    //获取文件的大小
    long size = file.getSize();
    System.out.println("文件名是:"+fileName);
    System.out.println("文件的类型是:"+contentType);
    System.out.println("文件的大小是:"+size+" 个字节");
    //获取文件上传的真实路径
    ServletContext servletContext = session.getServletContext();
    String realPath = servletContext.getRealPath("/upload");//自己上传保存的路径
    //创建路径
    File upload = new File(realPath);
    if(!upload.exists()){
        upload.mkdirs();
    }
    //上传文件
    file.transferTo(new File(realPath+"/"+fileName));
    return "success";
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_43555873

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值