10.文件上传

本文介绍了如何在SpringMVC中启用文件上传功能,包括使用CommonsMultipartResolver、配置defaultEncoding、处理上传大小限制,并给出了一个完整的文件上传示例和Controller实现。
摘要由CSDN通过智能技术生成

Spring MVC 为 文 件 上 传 提 供 了 直 接 的 支 持 , 这 种 支 持 是 通 过 即 插 即 用 的MultipartResolver 实现的。
Spring 用 Jakarta Commons FileUpload 技术实现了一个 MultipartResolver 实现类:CommonsMultipartResolver
Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的 上 传 工 作 , 如 果 想 使 用 Spring 的 文 件 上 传 功 能 , 需 现 在 上 下 文 中 配 置MultipartResolver
配置 MultipartResolver
defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内容 , 为 了 让 CommonsMultipartResolver 正 确 工 作 , 必 须 先 将 Jakarta Commons FileUpload 及 Jakarta Commons io 的类包添加到类路径下。
在这里插入图片描述

文件上传示例
导入 jar 包

commons-fileupload-1.2.1.jar
commons-io-2.0.jar
配置文件上传解析器

<!-- 配置文件上传解析器
id 必须是"multipartResolver",否则,会报错误:
java.lang.IllegalArgumentException: Expected
MultipartHttpServletRequest: is a MultipartResolver configured?
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<property name="defaultEncoding" value="UTF-8"></property>
	<property name="maxUploadSize" value="1024000"></property>
</bean>
上传页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="text" name="name">
    <input type="submit">
  </form>
  </body>
</html>
后台controller
/**
     * SpringMVC方式的文件上传
     *
     * @param request
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/upload")
    public String fileupload2(HttpServletRequest request, MultipartFile upload,String name) throws Exception {
        System.out.println("SpringMVC方式的文件上传...");
        // 先获取到要上传的文件目录
        String path = request.getSession().getServletContext().getRealPath("/uploads");
        // 创建File对象,一会向该路径下上传文件
        File file = new File(path);
        // 判断路径是否存在,如果不存在,创建该路径
        if (!file.exists()) {
            file.mkdirs();
        }
        // 获取到上传文件的名称
        String filename = upload.getOriginalFilename();
        String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
        // 把文件的名称唯一化
        filename = uuid + "_" + filename;
        // 上传文件
        upload.transferTo(new File(file, filename));
        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我超爱写bug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值