我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot如何实现文件上传功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot如何实现文件上传功能

这篇文章主要介绍了SpringBoot如何实现文件上传功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

经典的文件上传

服务器处理上传文件一般都是先在请求中读取文件信息,然后改变名称保存在服务器的临时路径下,最后保存到服务器磁盘中。本次以thymeleaf搭建demo,因此需要引入thymeleaf依赖库。

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-thymeleaf</artifactId>    <version>2.5.5</version></dependency>

如果使用的是gradle构建的项目,需要修改build.gradle文件:

compile 'org.springframework.boot:spring-boot-starter-thymeleaf:2.5.5'

新建一个Action类负责处理上传的文件:

@RestController@RequestMapping("/upload    public String saveFile(HttpServletRequest request, InputStream input, String ext) throws IOException {        String realPath = request.getServletContext().getRealPath("/upload/file/"); // 取得服务器真实路径        File file = new File(realPath);        if (!file.getParentFile().exists()) { // 目录不存在            file.mkdirs(); // 创建多级目录        }        String filePath = realPath + UUID.randomUUID() + "." + ext;        // 取的文件输出流        OutputStream out = new FileOutputStream(filePath);        byte[] data = new byte[2048]; // 缓冲数组2KB        int len = 0; // 读取字节长度        while ((len = input.read(data)) != -1) {            out.write(data, 0, len); // 文件写入磁盘        }        if (input != null) {            input.close();        }        out.close();        return filePath;    }}

在resources目录下新建templates文件夹,在里面创建index.html文件作为项目首页展示。

<!doctype HTML><html xmlns:th="http://www.thymeleaf.org">    <head>        <title>文件上传测试</title>        <meta charset="UTF-8" />    </head>    <body>        <form action="/upload/file" method="post" enctype="multipart/form-data">            <span>标题:</span>            <input type="text" name="title" /><br>            <span>文件:</span>            <input type="file" name="file" /><br>            <input type="submit" value="上传"  />        </form>    </body></html>

启动项目,直接访问:http://localhost:8080/将进入index.html页面。

SpringBoot如何实现文件上传功能

点击上传按钮,文件将被保存到服务器磁盘中:

SpringBoot如何实现文件上传功能

SpringBoot对上传文件处理的简化

SpringBoot对FileUpload组件进行了整合,在文件保存的时候可以避免直接操作IO流,通过配置文件的方式指定文件上传的限制参数。修改application.yml文件:

server:  port: 8080spring:  servlet:    multipart:      enabled: true  # 启用文件上传      max-file-size: 1MB # 单文件上传最大限制      max-request-size: 10MB # 文件上传最大值      file-size-threshold: 10KB # 上传文件达到多大时写入磁盘      location: / # 临时文件存储位置

修改UploadAction,使用MultipartFile类的transferTo方法保存上传文件。

@RestController@RequestMapping("/upload/*")public class UploadAction {    @PostMapping("/file")    public Object uploadHandler(HttpServletRequest request, String title, MultipartFile file) {        Map<String, Object> resultMap = new LinkedHashMap<>();        resultMap.put("title", title);        resultMap.put("fileName", file.getName()); // 文件名        resultMap.put("originalFilename", file.getOriginalFilename()); // 原始名称        resultMap.put("content-type", file.getContentType()); // 文件类型        resultMap.put("fileSize", file.getSize() / 1024 + "K"); // 文件大小        try {            // 保存文件            String etc = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);            String serverPath = request.getScheme() + "://" + request.getServerName()                    + ":" + request.getServerPort() + request.getContextPath() + "/file/upload/";            String fileName = UUID.randomUUID() + "." + etc;            resultMap.put("filePath", serverPath + fileName); // 文件地址(服务器访问地址)            // 文件保存再真实路径下            File saveFile = new File(request.getServletContext().getRealPath("/file/upload/") + fileName);            if (!saveFile.getParentFile().exists()) { // 目录不存在,创建目录                saveFile.mkdirs();            }            file.transferTo(saveFile); // 保存上传文件        } catch (IOException e) {            System.err.println("error-path: /upload/file, message: " + e.getMessage());        }        return resultMap;    }}

访问:http://localhost:8080/

SpringBoot如何实现文件上传功能

点击上传按钮:

SpringBoot如何实现文件上传功能

在浏览器上访问filePath,可以预览上传的文件:

SpringBoot如何实现文件上传功能

感谢你能够认真阅读完这篇文章,希望小编分享的“SpringBoot如何实现文件上传功能”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringBoot如何实现文件上传功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringBoot如何实现文件上传功能

这篇文章主要介绍了SpringBoot如何实现文件上传功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。经典的文件上传服务器处理上传文件一般都是先在请求中读取文件信息,然后改
2023-06-25

Springboot文件上传功能的实现

这篇文章主要介绍了SpringBoot文件上传功能的实现,文中通过代码示例介绍的非常详细,具有一定的参考学习价值,需要的朋友们可以参考阅读
2023-05-15

SpringBoot+Vue3实现上传文件功能

这篇文章主要介绍了SpringBoot+Vue3实现上传文件功能,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-01-28

SpringBoot如何实现单文件与多文件上传功能

这篇文章将为大家详细讲解有关SpringBoot如何实现单文件与多文件上传功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.单文件上传首先创建一个Spring Boot项目,并添加spring-boo
2023-06-26

如何使用Java SpringBoot实现文件上传功能

小编给大家分享一下如何使用Java SpringBoot实现文件上传功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!测试代码pom.xml:
2023-06-29

SpringBoot如何实现文件上传与下载功能

今天小编给大家分享一下SpringBoot如何实现文件上传与下载功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Sprin
2023-07-02

Springboot文件上传功能怎么实现

这篇文章主要介绍了Springboot文件上传功能怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Springboot文件上传功能怎么实现文章都会有所收获,下面我们一起来看看吧。1.新建文件上传页面在st
2023-07-06

SpringBoot超大文件上传实现秒传功能

这篇文章主要介绍了SpringBoot超大文件上传实现秒传功能,在实现分片上传的过程,需要前端和后端配合,比如前后端的上传块号的文件大小,前后端必须得要一致,否则上传就会有问题,需要的朋友可以参考下
2022-12-10

JavaWeb如何实现上传文件功能

本篇内容主要讲解“JavaWeb如何实现上传文件功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaWeb如何实现上传文件功能”吧!这是需要使用到的两个jar包一定要导入到lib目录中,并
2023-07-02

Netty如何实现文件上传功能

这篇文章主要讲解了“Netty如何实现文件上传功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Netty如何实现文件上传功能”吧!今天我们来完成一个使用netty进行文件传输的任务。在实际
2023-06-20

SpringBoot实现文件上传下载功能小结

最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的使用方法还在研究中,日后整理再记录。本文主要介绍SpringBoot后台对文件上传与下载的处理。单文件上传// 单文件上传@RequestMapp
2023-05-31

Flex上传文件功能该如何实现

这期内容当中小编将会给大家带来有关Flex上传文件功能该如何实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。写过很多文件上传的功能,包括AJAX实现动态监控上传进度的,现在看到了实现Flex文件上传功能
2023-06-17

Java如何实现多文件上传功能

这篇文章主要为大家展示了“Java如何实现多文件上传功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现多文件上传功能”这篇文章吧。文件上传是开发中十分常见的功能,在servlet
2023-06-20

thinkphp中如何实现文件上传功能

这篇文章主要介绍“thinkphp中如何实现文件上传功能”,在日常操作中,相信很多人在thinkphp中如何实现文件上传功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp中如何实现文件上传功能
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录