S++

千线一眼

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

SpringMVC-文件上传

文件上传也是获得请求数据的一种,但是获得客户端的数据并不是一个普通的类型。

文件上传步骤

  1. 导入fileupload和io的包坐标
  2. 配置文件上传解析器
  3. 编写文件上传代码

1. 导入坐标

    <!--fileupload、io 文件上传-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.3</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>

2. 配置文件上传解析器

value设置过大可能会导致超出tomcat限制导致文件为null

    <!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--上传文件总大小-->
        <property name="maxUploadSize" value="102400" />
        <!--上传单个文件大小-->
        <property name="maxUploadSizePerFile" value="102400" />
        <!--上传文件默认编码-->
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

3. 编写文件上传代码

新建一个jsp文件为upload.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>上传文件</title>
</head>
<body>
  <form action="${pageContext.request.contextPath}/upload" method="post" enctype="application/x-www-form-urlencoded">
      文件<input type="file" name="file"/>
      <input type="submit" value="提交">
  </form>
</body>
</html>

编写Controller中文件获得方法

    // 上传文件
    @ResponseBody
    @RequestMapping("/upload")
    public String upload(@RequestParam(value = "file",required = false) MultipartFile file) throws IOException {
        if(file == null){
            return "抱歉,您没有传入文件";
        }else {
            System.out.println(file);
            // 获取上传文件名称
            String originalFilename = file.getOriginalFilename();
            // 存储
            file.transferTo(new File("文件路径"+originalFilename));
            return "上传文件成功!";
        }
    }

posted on   S++  阅读(12)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示