SpringBoot系列10-文件上传

猿份哥 1年前 ⋅ 845 阅读 ⋅ 0 个赞
文章目录
  1. 1.先来最简单的
  2. 2.设置文件大小,请求大小
  3. 3.多文件上传

怎样使用最简单的方式上传文件,如何上传多个文件呢

先来最简单的

pom.xml文件引入依赖文件

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

说明:spring-boot-starter-web包含了文件上传的依赖,引入spring-boot-starter-thymeleaf不是必须的你也可以使用jsp代替

application.properties配置一下存储位置

#文件存储位置
file.path=D:/test

toUpload.html前端页面

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>springboot 单个文件上传</title>
</head>
<body>
    <form th:action="@{doUpload}" th:method="post" enctype="multipart/form-data">
        <label>选择文件:</label><input th:type="file" th:name="file">
        <input th:type="submit" th:value="上传">
    </form>
</body>
</html>

说明:@{doUpload}上传接口的请求路径

result.html结果页面

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>springboot 文件上传结果页面</title>
</head>
<body>
  <h3 th:text="${message}">结果消息</h3>
</body>
</html>

说明:${message}显示上传后的消息

FileUploadController.java

/**
 * @author 猿份哥
 * @description
 * @createTime 2019/1/6 20:29
 */
@Controller
public class FileUploadController {
    @Value("${file.path}")
    private String filePath;

    @RequestMapping("/toUpload")
    public String toUpload(){
        return "toUpload";
    }
    @RequestMapping("/doUpload")
    public String doUpload(@RequestParam("file")MultipartFile multipartFile, Model model) throws IOException {

        if (multipartFile.isEmpty()){
            model.addAttribute("message","请选择文件");
        }
        File file=new File(filePath,multipartFile.getOriginalFilename());
        multipartFile.transferTo(file);
        model.addAttribute("message","上传成功");
        return "result";
    }
}

说明:doUpload实现了接收文件并且将文件保存到指定目录

运行项目浏览器访问http://localhost:8080/toUpload即可上传单个文件

设置文件大小,请求大小

#默认单个上传文件是1MB
spring.servlet.multipart.max-file-size=5MB
#默认上传文件总大小是10MB
spring.servlet.multipart.max-request-size=50MB

说明:虽然我们什么都可以不用配置就可以完成上传功能,但是默认单个上传文件是1MB,默认上传文件总大小是10MB.如果文件过大就会 上传失败,此时我们可以根据需求调整这了两个参数值

多文件上传

FileUploadController.java

/**
 * @author 猿份哥
 * @description
 * @createTime 2019/1/6 20:29
 */
@Controller
public class FileUploadController {
    @RequestMapping("/toMultiUpload")
    public String toMultiUpload(){
        return "toMultiUpload";
    }
    @RequestMapping("/multiUpload")
    public String mutiUpload(HttpServletRequest request,Model model){
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
        for (int i = 0; i < files.size(); i++) {
            MultipartFile multipartFile = files.get(i);
            String fileName=multipartFile.getOriginalFilename();
            File file=new File(filePath,fileName);
            try {
                multipartFile.transferTo(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        model.addAttribute("message","上传成功");
        return "result";
    }
 }

源码下载链接

原文链接: http://www.lskyf.com/view/35

作者:猿份哥,版权所有,欢迎保留原文链接进行转载:)


全部评论: 0

    我有话说:

    Spring Boot系列8-使用jasypt加密配置文件内容简单版

    文章目录 1.为什么配置文件需要加密 2.首先引入pom依赖文件 3.在application.properties或者application.yml文件中配置加密密码 4.获取加密内容例如:我想

    thymeleaf onclick值到function

    thymeleaf onclick值到function 使用[[]] 例如: <span th:onclick="app.test([[${an.id}]])"/>测试click

    SpringBoot系列9-使用jasypt自定义stater运行时动态传入加密密码

    文章目录 1.新建springboot-encryption-configuration项目实现stater 2.pom文件引入jasypt 3.在resources/support/下配置

    Spring Boot系列1-helloword

      使用springboot简单轻松创建helloword SpringBoot系列1-helloword 关于springboot这是摘自官方的一段话 Spring Boot

    Spring Boot系列7-SpringBoot+mybatis+druid+TypeHandler

    介绍在SpringBoot中集成mybatis和druid以及自定义TypeHandler 创建数据库表 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- --------------------...

    Spring Boot系列6-SpringBoot中使用servlet

    介绍在SpringBoot中如何使用servlet pom.xml <dependency> <groupId>org.springframework.boot<

    SpringBoot系列15-mysql-multiple-data-sources1

    springboot 多数据源的一个简单示例 多数据源分包加载 新建数据库test1和表tbl_user CREATE TABLE `tbl_user` ( `id` int(11) NOT

    win10如何彻底关闭自动更新

    缘由:win10的自动更新是默认开启的,一有新版本就会提示更新,并且有时候更新会占用很长一段时间。如何彻底关闭自动更新呢? 方法:这里列举一个比较简单的方法 1.键盘同时按下 【win+R】 打开

    SpringBoot系列14-加载yml,properties配置文件信息

    yml前置知识 yml语法: 单个key value 写法 k:空格v eg: color: blue 对象写法 k: {k1: v1,k2: v2} k: k1: v1 k2: v2 list集合写法 k: [v1,v2,v3] k: -...

    Spring Boot系列2-全局统一异常处理

    原创: 天空和唯美 天空唯美  点击查看原文 为什么要全局统一异常处理呢?如果系统发生了异常,不做统一异常处理,前端会给用户展示一大片看不懂的文字。做统一异常处理后当

    SpringBoot系列12-redis-pipeline keys模糊查询替代方案

    keys模糊查询遇到性能问题redis cup 99%以及解决方案 之前写过一篇文章 《java redis通过key模糊删除,批量删除,批量查询相关数据》,在项目中我也是这样使用的。刚开始还没有

    SpringBoot系列13-整合thumbnailator将图片文件压缩转换成base64字符串

    一.Thumbnails用法介绍: 1.按指定大小把图片进行缩和放(会遵循原图高宽比例) //此处把图片压成400×500的缩略图 //变为400*300,遵循原图比例缩或放到400*某个高度 Thumbnails.of(fromPic).siz...

    SpringBoot系列16-Spring boot2x快速整合swagger2(Open Api3注解版)

    前言:为什么要使用swagger 传统的web开发,前端和后端的HTTP接口文档交互都是使用word文档记录,存在不仅限于这些问题;不能时时更新,不易于传输etc. swagger2可以使用配置文件

    springboot项目运行在docker中 file.exists()返回false没有报错

      springboot项目运行在docker中 file.exists()返回false没有报错   表现:在windows运行正确,但是打包后运行在docker容器中找不到

    加入公众号
    加入公众号