当前位置: 首页 > news >正文

Spring Boot 实现文件上传和下载

文章目录

  • Spring Boot 实现文件上传和下载
    • 一、引言
    • 二、文件上传
      • 1、配置Spring Boot项目
      • 2、创建文件上传控制器
      • 3、配置文件上传大小限制
    • 三、文件下载
      • 1、创建文件下载控制器
    • 四、使用示例
      • 1、文件上传
      • 2、文件下载
    • 五、总结

Spring Boot 实现文件上传和下载

在这里插入图片描述

一、引言

在现代Web应用中,文件上传和下载是非常常见的功能。无论是用户上传头像、文档,还是下载资源文件,这些操作都需要后端提供支持。Spring Boot 作为目前最流行的Java框架之一,提供了简洁而强大的方式来实现文件的上传和下载功能。本文将详细介绍如何在Spring Boot中实现文件的上传和下载,并提供相应的代码示例。

二、文件上传

1、配置Spring Boot项目

首先,确保你的Spring Boot项目已经配置了spring-boot-starter-web依赖。这个依赖包含了Spring MVC,它是实现文件上传和下载的核心。

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

2、创建文件上传控制器

接下来,我们需要创建一个控制器来处理文件上传的请求。Spring Boot 提供了MultipartFile类来处理上传的文件。

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;@RestController
public class FileUploadController {@PostMapping("/upload")public String handleFileUpload(@RequestParam("file") MultipartFile file) {if (file.isEmpty()) {return "文件为空,请重新选择文件";}try {// 获取文件名String fileName = file.getOriginalFilename();// 设置文件存储路径String filePath = "/path/to/upload/" + fileName;// 将文件保存到指定路径file.transferTo(new File(filePath));return "文件上传成功: " + fileName;} catch (IOException e) {e.printStackTrace();return "文件上传失败";}}
}

在这个示例中,我们通过@RequestParam("file")注解来接收前端上传的文件,并将其保存到指定的路径中。

3、配置文件上传大小限制

默认情况下,Spring Boot 对上传文件的大小有限制。如果你需要上传大文件,可以在application.properties中配置以下属性:

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

三、文件下载

1、创建文件下载控制器

文件下载的实现相对简单。我们可以通过HttpServletResponse将文件流写入响应中,从而实现文件下载。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;@RestController
public class FileDownloadController {@GetMapping("/download")public void downloadFile(@RequestParam("filename") String filename, HttpServletResponse response) {File file = new File("/path/to/upload/" + filename);if (file.exists()) {response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment; filename=" + filename);byte[] buffer = new byte[1024];try (FileInputStream fis = new FileInputStream(file);OutputStream os = response.getOutputStream()) {int len;while ((len = fis.read(buffer)) != -1) {os.write(buffer, 0, len);}os.flush();} catch (IOException e) {e.printStackTrace();}} else {response.setStatus(HttpServletResponse.SC_NOT_FOUND);}}
}

在这个示例中,我们通过HttpServletResponse将文件流写入响应中,并设置响应头以触发文件下载。

四、使用示例

1、文件上传

你可以使用Postman或任何HTTP客户端工具来测试文件上传功能。发送一个POST请求到/upload接口,并在请求体中包含一个文件。

2、文件下载

对于文件下载,你可以直接在浏览器中访问/download?filename=yourfile.txt,浏览器会自动触发文件下载。

五、总结

通过本文的介绍,你已经学会了如何在Spring Boot中实现文件的上传和下载功能。文件上传通过MultipartFile类处理,而文件下载则通过HttpServletResponse实现。这些功能在大多数Web应用中都非常实用,希望本文能帮助你更好地理解和应用这些技术。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Spring Boot File Upload Example
  • Spring Boot File Download Example
http://www.lryc.cn/news/528250.html

相关文章:

  • 慕课:若鱼1919的视频课程:Java秒杀系统方案优化 高性能高并发实战,启动文档
  • React第二十七章(Suspense)
  • 虚幻基础08:组件接口
  • iPhone SE(第三代) 设备详情图
  • 2025苹果CMS v10短剧模板源码
  • 2007-2020年各省国内专利申请授权量数据
  • 第一天-嵌入式应用开发介绍
  • 约瑟夫问题(信息学奥赛一本通-2037)
  • WPF5-x名称空间
  • 一个python项目中的文件和目录的作用是什么?scripts,venv,predict的具体含义
  • python学opencv|读取图像(四十八)使用cv2.bitwise_xor()函数实现图像按位异或运算
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-block.py
  • c++多态
  • ResNeSt: Split-Attention Networks 参考论文
  • Blazor-选择循环语句
  • 从AD的原理图自动提取引脚网络的小工具
  • 苍穹外卖使用MyBatis-Plus
  • Baklib引领数字化内容管理转型提升企业运营效率
  • 【PyTorch】4.张量拼接操作
  • MySQL--》深度解析InnoDB引擎的存储与事务机制
  • Visio2021下载与安装教程
  • 实战纪实 | 真实HW漏洞流量告警分析
  • 【AI论文】扩散对抗后训练用于一步视频生成总结
  • 重回C语言之老兵重装上阵(十六)C语言可变参数
  • 深拷贝、浅拷贝、移动语义
  • 双向链表在系统调度、游戏、文本编辑及组态方面的应用
  • 实践网络安全:常见威胁与应对策略详解
  • 关于2024年
  • Hive:Hive Shell技巧
  • Markdown Viewer 浏览器, vscode