Spring Boot教程(十三):Spring Boot文件上传「建议收藏」

Spring Boot教程(十三):Spring Boot文件上传「建议收藏」一、创建一个简单的包含WEB依赖的SpringBoot项目pom.xml内容:<!–SpringBootweb启动器–><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-…

大家好,又见面了,我是你们的朋友全栈君。

分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/

一、创建一个简单的包含WEB依赖的SpringBoot项目

pom.xml内容:

<!-- Spring Boot web启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- jsp -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <!--<scope>provided</scope>-->
</dependency>

二、配置文件上传的文件大小限制

application.properties配置文件添加:

# 上传文件总的最大值
spring.servlet.multipart.max-request-size=10MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=10MB

## jsp
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

  • spring.servlet.multipart.max-file-size限制单个文件的最大值
  • spring.servlet.multipart.max-request-size限制上传的多个文件的总大小

三、单文件上传示例

1、创建Controller控制类,内容如下:

package com.songguoliang.springboot.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * @Description
 * @Author sgl
 * @Date 2018-05-15 14:04
 */
@Controller
public class UploadController {
    private static final Logger LOGGER = LoggerFactory.getLogger(UploadController.class);

    @GetMapping("/upload")
    public String upload() {
        return "upload";
    }

    @PostMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "上传失败,请选择文件";
        }

        String fileName = file.getOriginalFilename();
        String filePath = "/Users/itinypocket/workspace/temp/";
        File dest = new File(filePath + fileName);
        try {
            file.transferTo(dest);
            LOGGER.info("上传成功");
            return "上传成功";
        } catch (IOException e) {
            LOGGER.error(e.toString(), e);
        }
        return "上传失败!";
    }

    
}

2、创建upload.jsp文件

只有一个表单,选择文件,form的enctypemultipart/form-data:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <title>单文件上传</title>
</head>
<body>
<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

3、通过springboot插件启动项目,浏览器输入http://localhost:8080/upload

这里写图片描述

选择文件点击提交按钮返回成功信息,我们上传的文件保存在/Users/itinypocket/workspace/temp路径下:

这里写图片描述

四、多文件上传

1、创建多文件上传的jsp页面,多文件上传页面只是比单文件上传多了file选择的input而已,multiUpload.jsp内容如下:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <title>多文件上传</title>
</head>
<body>
<form method="post" action="/multiUpload" enctype="multipart/form-data">
    <input type="file" name="file"><br>
    <input type="file" name="file"><br>
    <input type="file" name="file"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

2、在UploadController里添加多文件上传的方法

@GetMapping("/multiUpload")
public String multiUpload() {
    return "multiUpload";
}

@PostMapping("/multiUpload")
@ResponseBody
public String multiUpload(HttpServletRequest request) {
    List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
    String filePath = "/Users/itinypocket/workspace/temp/";
    for (int i = 0; i < files.size(); i++) {
        MultipartFile file = files.get(i);
        if (file.isEmpty()) {
            return "上传第" + (i++) + "个文件失败";
        }
        String fileName = file.getOriginalFilename();

        File dest = new File(filePath + fileName);
        try {
            file.transferTo(dest);
            LOGGER.info("第" + (i + 1) + "个文件上传成功");
        } catch (IOException e) {
            LOGGER.error(e.toString(), e);
            return "上传第" + (i++) + "个文件失败";
        }
    }

    return "上传成功";

}

3、重启服务,浏览器输入http://localhost:8080/multiUpload:

这里写图片描述

4、然后选择要上传的文件,点击提交按钮,得到成功信息:

这里写图片描述

我们选择的三个文件已被成功上传到/Users/itinypocket/workspace/temp路径下。

分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/

源码:
github
码云

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130391.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《经济学人》深度报道:DeepMind和谷歌的AI拉锯战

    《经济学人》深度报道:DeepMind和谷歌的AI拉锯战

    2021年7月3日
    194
  • ubuntu学习的简单笔记

    l vi编辑器开发步骤A)输入 vi Hello.javaB) 输入 i 插入模式。C)输入 冒号。【保存退出:wq】【退出

    2021年12月28日
    47
  • 香农编码c++实现_香农费诺编码例子

    香农编码c++实现_香农费诺编码例子实验三香农编码信息论与编码实验报告院系:哈尔滨理工大学荣成校区专业:电子信息工程学号:姓名:日期:2015年6月16日香农编码信息论与编码第三次实验报告一、实验目的和任务?1、?理解信源编码的意义;?2、?熟悉?MATLAB程序设计;??3、?掌握香农编码的方法及计算机实现;??4、?对给定信源进行香农编码,并计算编码效率;?二、实验原理介绍?给定某个信源符号的概率分布,通过以下的步骤进行香…

    2025年10月20日
    5
  • java面向对象三大特性「建议收藏」

    java面向对象三大特性「建议收藏」一、面向对象的概念面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物使用对象的关系来描述事物之间的联系,这种思想就是面向对象。提到面向对象,自然会想到面向过程,面向过程就是分析解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了。面向对象则是把解决的问题按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。当然,一个应用程序会包含多个对象,通过多个对象的相互配合来

    2022年7月8日
    18
  • 汇编指令B与BL_AB500编程中B指令使用

    汇编指令B与BL_AB500编程中B指令使用1.b与bl指令的作用是什么?   b与bl指令的作用:实现程序跳转,也就是调用子程序。2.b与bl指令的区别是什么?   b与bl指令的区别:b指令:简单的程序跳转,跳转到到目标标号处执行。                                 bl指令:带链接程序跳转,也就是要带返回地址。在发生跳转前,将当前PC-4保存到R14中。             …

    2022年10月21日
    2
  • 锂电池稳压3.3V芯片_电源芯片型号

    锂电池稳压3.3V芯片_电源芯片型号干电池升压3.3V的电源芯片PW5100适用于一节干电池升压到3.3V,两节干电池升压3.3V的升压电路,PW5100干电池升压IC。干电池1.5V和两节干电池3V升压到3.3V的测试数据输入电压输入电流输出电压输出电流0.9V输入测试0.907V0.21A3.26V50MA0.887V0.45A3.21V100MA0.857V0.83A3.12V150MA输入电压输入电流输出电压输出电流1V输入测试1V0.9…

    2022年10月7日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号