遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

SpringMVC上传文件

文件上传的要求

1
2
3
A、form表单的enctype取值必须是:multipart/form-data
B、method属性取值必须是Post
C、提供一个文件选择域 <input type="file" /> 

 

springmvc上传文件示例

这里只是演示,上传的文件和访问的应用在同一台服务器上。

pom添加依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!--文件上传的依赖-->
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-io</artifactId>
  <version>1.3.2</version>
</dependency>
 
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>

 

创建保存文件的目录

在webapp下创建目录upload,上传的文件放到这个目录下

 

jsp页面

在webapp下创建upload.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="/testFileUpload" method="post" enctype="multipart/form-data">
        文件:<input type="file" name="uploadFile"/><br/>
        <input type="submit" value="上传"/>
    </form>
</body>
</html>

 

web.xml中修改欢迎页

1
2
3
<welcome-file-list>
  <welcome-file>upload.jsp</welcome-file>
</welcome-file-list>  

 

控制器

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
32
33
34
35
36
37
38
39
40
package com.qzcsbj.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
 
@Controller
public class TestUploadController {
 
    @RequestMapping("/testFileUpload")
    public String testFileUpload(MultipartFile uploadFile, HttpServletRequest request) throws Exception {
        String fileName = "";
        // 获取原始文件名字
        String uploadFileName = uploadFile.getOriginalFilename();
        // 把文件加上随机数,防止文件重复
        String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
        fileName = uuid + "_" + uploadFileName;
        System.out.println("要上传的文件的名称是:" + fileName);
        // 获取上传的路径
        String basePath = request.getServletContext().getRealPath("/upload");
        System.out.println("basePath:" + basePath);
        // 每天一个文件夹
        String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        // 判断路径是否存在
        File file = new File(basePath + "/" + datePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        // 把上传的文件写到指定位置
        File f = new File(file, fileName);
        uploadFile.transferTo(f);
        System.out.println("文件上传成功,路径为:" +f.getAbsolutePath());
        return "success";
    }
}

 

配置文件解析器

springmvc.xml中添加:

1
2
3
4
5
6
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传文件的最大尺寸为 5MB -->
    <property name="maxUploadSize">
        <value>5242880</value>
    </property>
</bean>

 

测试

启动tomcat,选择要上传的文件,点击“上传”

 

日志

 

上传成功

 

访问图片:http://localhost:8080/upload/2023-01-18/47CE4F91ADD84030B77E223FB07951AE_fu.jpg

 

【bak】

原文会持续更新,原文地址:https://www.cnblogs.com/uncleyong/p/17058667.html

 

posted @   全栈测试笔记  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示