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的enctype为multipart/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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据挖掘的过程有哪些[通俗易懂]

    数据挖掘的过程有哪些[通俗易懂]  随着大数据时代的到来,各行各业都无法避免数据洪流的洗礼,一场无声的数据变革在悄然发生。谁能更好地将隐藏在数据背后有价值的信息挖掘出来,就意味着谁能在这种变化中获得主动权,能更快更好地发展。在这背景下,加强对大数据挖掘已成为许多企业迫切需要进行的任务。  以下将从数据挖掘的概念、数据挖掘分类和数据挖掘过程三个方面进行分析,帮助您更好地理解数据挖掘。  一、数据挖掘的概念  数据挖掘是指从数据库的大量数据中揭示隐含和潜在信息的非凡过程。从数据中获取有用的信息和知识,协助事务运作,改进商品,协助企

    2022年6月23日
  • declare命令的用法_robo3t连接mongodb

    declare命令的用法_robo3t连接mongodbLinuxdeclare命令用于声明shell变量。declare为shell指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行type来自:http://man.linuxde.net/declaretype来自:http://m

    2022年10月31日
  • 如何产生ioexception_结合实例论述控制过程

    如何产生ioexception_结合实例论述控制过程IOCP结合AcceptEx实例

    2022年9月29日
  • matlab怎么将散点图的散点连线_plot函数画散点图

    matlab怎么将散点图的散点连线_plot函数画散点图1x=[2;4;8;10;12;16;18;20;22;25;26;30;40;46;48;66;68;70;82;84;100;110;120;130;140;150;160;170;180];

    2022年8月3日
  • 微服务优缺点_微服务优势和不足

    微服务优缺点_微服务优势和不足优点1.每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求;2.微服务能够被小团队单独开发;3.微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的;4.微服务能使用不同的语言开发;5.微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果,无需通过合作才能体现价值;6.微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面组件混合;缺点:1.运维要求较高; 2.分布式的复杂性; 3.接口调整成本高; 4.学习难度曲线

    2022年10月22日
  • 查看80端口:_如何查看自己80端口开放

    查看80端口:_如何查看自己80端口开放查看80端口:netstat-ano|findstr80添加端口:netshhttpaddiplistenipaddress=xxx.xxx.xxx.xxx删除端口:netshhtt

    2022年8月3日

发表回复

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

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