广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Spring Boot实现文件上传和下载
  • 422
分享到

Spring Boot实现文件上传和下载

springbootjavaservlet 2023-09-06 06:09:42 422人浏览 泡泡鱼
摘要

实现Spring Boot文件上传和下载的步骤: 1.文件上传 在pom.xml文件中添加依赖:spring-boot-starter-WEB和spring-boot-starter-thymelea

实现Spring Boot文件上传和下载的步骤:

1.文件上传

  • 在pom.xml文件中添加依赖:spring-boot-starter-WEBspring-boot-starter-thymeleaf
  • 创建一个上传前端的页面,包括一个表单来选择文件和一个提交按钮。
  • 在Controller中添加一个POST方法,该方法接受MultipartFile参数,将文件保存在服务器上。
  • 在application.properties文件中配置上传文件的最大大小和文件存储路径。

2.文件下载

  • 在Controller中添加一个GET方法,该方法接收一个文件名参数,通过ResponseEntity将文件内容返回给客户端。
  • 如果需要授权访问,则可以通过使用Spring Security实现基本身份验证。

以下是Spring Boot实现文件上传和下载的代码示例:

1.文件上传

  • pom.xml依赖配置:
  commons-fileupload  commons-fileupload  1.3.3  javax.servlet  javax.servlet-api  4.0.1  provided
  • 在配置文件中配置:

    # 开启上传和下载spring.servlet.multipart.enabled=true# 最大的文件大小spring.servlet.multipart.max-file-size=30MB# 单次最大请求大小spring.servlet.multipart.max-request-size=30MB# 自定义的上传文件存放路径file.upload.dir=e:/test
  • 在Controller中添加一个POST方法:

@PostMapping("/upload")@ResponseBodypublic String upload(@RequestParam("file") MultipartFile file) {    if (file.isEmpty()) {        return "上传失败,请选择文件";    }    // 获取文件名    String fileName = file.getOriginalFilename();    // 获取文件的后缀名    String suffixName = fileName.substring(fileName.lastIndexOf("."));    // 上传后的路径    String filePath = "D:/upload/";    // 解决中文问题,liunx下中文路径,图片显示问题    fileName = UUID.randomUUID() + suffixName;    // 构建上传路径    File dest = new File(filePath + fileName);    // 检测是否存在目录    if (!dest.getParentFile().exists()) {        dest.getParentFile().mkdirs();    }    try {        // 保存文件        file.transferTo(dest);        return "上传成功";    } catch (IllegalStateException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    }    return "上传失败";}

2.文件下载

  • 在Controller中添加一个GET方法:
@GetMapping("/download")public ResponseEntity<byte[]> download() throws IOException {    // 获取文件    File file = new File("D:/upload/1.jpg");    // 构造响应    HttpHeaders headers = new HttpHeaders();    headers.setContentDispositionFORMData("attachment", file.getName());    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    return new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, httpstatus.CREATED);}
编写Controller方法@GetMapping("/download")public void downloadFile(HttpServletResponse response) {    try {        //获取要下载的文件        File file = new File("file_path");        //设置响应的内容类型为二进制流,即文件类型        response.setContentType("application/octet-stream");        //设置文件名        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8"));        //创建输入流        FileInputStream inputStream = new FileInputStream(file);        BufferedInputStream buffInputStream = new BufferedInputStream(inputStream);        //创建输出流        ServletOutputStream outputStream = response.getOutputStream();        BufferedOutputStream buffOutputStream = new BufferedOutputStream(outputStream);        //循环读取数据并写入到响应输出流中        byte[] buffer = new byte[1024];        int len = -1;        while ((len = buffInputStream.read(buffer)) != -1) {            buffOutputStream.write(buffer, 0, len);        }        //关闭流        buffOutputStream.flush();        buffOutputStream.close();        outputStream.flush();        outputStream.close();        buffInputStream.close();        inputStream.close();    } catch (Exception e) {        e.printStackTrace();    }}
SpringBoot中,我们可以通过以下步骤实现文件响应给浏览器实现下载:在Controller中编写请求处理方法,并使用@GetMapping注解来指定该方法处理GET请求。在方法中使用InputStreamResource将本地文件以流的形式读取到内存中。使用ResponseEntity.ok()方法构造响应,并将之前获取到的InputStreamResource作为参数传入。使用.header()方法设置响应头,包括Content-DispositionContent-Type等信息。以下是一个示例代码:import org.springframework.core.io.InputStreamResource;import org.springframework.http.HttpHeaders;import org.springframework.http.MediaType;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;@Controllerpublic class FileDownloadController {        @GetMapping("/download")    public ResponseEntity<InputStreamResource> downloadFile() throws IOException {        String filename = "example.txt";        InputStream is = new FileInputStream(filename);        InputStreamResource resource = new InputStreamResource(is);        HttpHeaders headers = new HttpHeaders();        headers.add("Content-Disposition", "attachment; filename=\"" + filename + "\"");        headers.add("Cache-Control", "no-cache, no-store, must-revalidate");        headers.add("Pragma", "no-cache");        headers.add("Expires", "0");                return ResponseEntity.ok()                .headers(headers)                .contentLength(is.available())                .contentType(MediaType.parseMediaType("application/octet-stream"))                .body(resource);    }}其中,Content-Disposition头用于描述响应结果的类型,这里指定为attachment表示要下载的文件,filename表示文件名。Cache-ControlPragmaExpires头用于控制缓存的行为,这里设为不缓存。最后将InputStreamResource对象作为响应体返回即可。

来源地址:https://blog.csdn.net/qq_45525848/article/details/129344889

--结束END--

本文标题: Spring Boot实现文件上传和下载

本文链接: https://www.lsjlt.com/news/396592.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Spring Boot实现文件上传和下载
    实现Spring Boot文件上传和下载的步骤: 1.文件上传 在pom.xml文件中添加依赖:spring-boot-starter-web和spring-boot-starter-thymelea...
    99+
    2023-09-06
    spring boot java servlet
  • Spring Boot使用GridFS实现文件的上传和下载方式
    目录使用GridFS实现文件的上传和下载首先了解一下怎么用命令操作GridFS使用Spring Boot操作GridFSSpring Boot中使用GridFS什么是GridFS在S...
    99+
    2022-11-12
  • Spring MVC实现文件上传和下载
    本文实例为大家分享了Spring MVC实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件上传 1、导入主要依赖 <!--文件上传--> <depe...
    99+
    2022-11-12
  • Spring MVC 实现文件的上传和下载
    文章目录 前言1. 文件上传1.1 文件上传介绍1.2 文件上传实现1.2.1 添加依赖1.2.2 配置上传解析器1.2.3 通过表单上传1.2.4 创建控制器类1.2.5 上传演示 ...
    99+
    2023-09-26
    spring mvc java java-ee
  • Spring boot实现文件上传实例(多文件上传)
    文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(...
    99+
    2023-05-31
    spring boot 文件上传
  • 使用Spring MVC怎么实现文件上传和下载
    这期内容当中小编将会给大家带来有关使用Spring MVC怎么实现文件上传和下载,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文件上传导入主要依赖<!--文件上传--><dependen...
    99+
    2023-06-14
  • ASP.NETCore实现文件上传和下载
    本文实例为大家分享了ASP.NET Core实现文件上传和下载的具体代码,供大家参考,具体内容如下 一、文件上传 1.1 获取文件后缀 /// <summary> ///...
    99+
    2022-11-13
  • Go实现文件上传和下载
    本文实例为大家分享了Go实现文件上传和下载的具体代码,供大家参考,具体内容如下 一.文件上传 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析 HTM...
    99+
    2022-11-11
  • vue实现文件上传和下载
    本文实例为大家分享了vue实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件上传 vue中的文件上传主要分为两步:前台获取到文件和提交到后台 获取文件 前台获取文件,主要是...
    99+
    2022-11-12
  • springMVC实现文件上传和下载
    本文实例为大家分享了springMVC实现文件上传和下载的具体代码,供大家参考,具体内容如下 1准备工作 web.xml文件导入DispatcherServlet,Character...
    99+
    2022-11-12
  • java实现文件上传和下载
    本文实例为大家分享了java实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件的上传 upload:文件上传 客户端通过表单的文件域file  把客户端的文件 上...
    99+
    2022-11-12
  • Spring Boot简单实现文件上传功能
    目录前言后端处理物理路径和虚拟路径映射前言 前端处理 通过form表单来上传文件提交方式为postenctype格式为"multipart/form-data"i...
    99+
    2022-11-13
  • 怎么用Spring Cloud Feign实现文件上传下载
    这篇“怎么用Spring Cloud Feign实现文件上传下载”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2023-06-29
  • SpringMVC实现上传下载文件
    本文实例为大家分享了SpringMVC实现上传下载文件的具体代码,供大家参考,具体内容如下 一、SpringMVC专门提供了CommonsMultipartResolver组件用于文...
    99+
    2022-11-13
  • Spring Boot实现文件上传的两种方式
    最近的一个小项目里使用到了文件上传、下载功能,今天我打算梳理一下文件上传所涉及的技术及实现。 内容主要包括两部分,如何通过纯 Servlet 的形式进行文件上传、保存(不通过 Spring 框架);另一部分是如何在 Spring Web M...
    99+
    2023-09-02
    spring boot servlet java
  • Spring MVC异步上传、跨服务器上传和文件下载
    一、异步上传 之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。 1.1 JSP页面 编写JSP页...
    99+
    2023-08-31
    java maven spring mvc
  • springMVC怎么实现文件上传和下载
    本篇内容介绍了“springMVC怎么实现文件上传和下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文实例为大家分享了springMVC...
    99+
    2023-06-20
  • Android Http实现文件的上传和下载
    最近做一个项目,其中涉及到文件的上传和下载功能,大家都知道,这个功能实现其实已经烂大街了,遂、直接从网上荡了一堆代码用,结果,发现网上的代码真是良莠不齐,不是写的不全面,就是有...
    99+
    2022-06-06
    HTTP Android
  • Vue实现文件上传和下载功能
    本文实例为大家分享了Vue实现文件上传和下载功能的具体代码,供大家参考,具体内容如下 1、a标签download属性 在H5中,为a标签新增了一个download属性,来直接文件的...
    99+
    2022-11-12
  • SpringBoot如何实现上传和下载文件
    这篇文章主要介绍SpringBoot如何实现上传和下载文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!技术概述我们的项目是实现一个论坛。在论坛上发布博客时应该要可以上传文件,用户阅读博客是应该要可以下载文件。于是我...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作