首页 > 其他分享 >使用SpringBoot实现文件上传和下载

使用SpringBoot实现文件上传和下载

时间:2023-12-05 14:35:48浏览次数:44  
标签:文件 SpringBoot boot upload file 上传 下载

上传文件: 1.在 `pom.xml` 文件中添加依赖:

xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>

2.编写上传页面,例如在 `upload.html` 文件中:

html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<div>
<label for="file">选择文件: </label>
<input type="file" id="file" name="file"/>
</div>
<div>
<input type="submit" value="上传"/>
</div>
</form>
</body>
</html>

3.编写上传逻辑

@Controller
public class FileController {

@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
if (file.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "请选择一个文件上传!");
return "redirect:/";
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get(file.getOriginalFilename());
Files.write(path, bytes);
redirectAttributes.addFlashAttribute("message", "上传成功!");
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/";
}

}

下载文件: 1.创建一个接口,用于下载文件。

@Controller
public class FileDownloadController {

@Autowired
private ServletContext servletContext;

/**
* 下载文件
*/
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam(defaultValue = "") String fileName) throws Exception {
if (fileName.isEmpty()) {
returnbuild();
String filePath Resource resource);
if (!resource.exists()) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
String contentType = servletContext.getMimeType(resource.getFile().getAbsolutePath());
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
.body(resource);
}

}

2.在 `application.properties` 文件中添加如下配置或在配置文件中指定下载文件目录:

properties
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
file.upload-dir=/path/to/upload/files/
3.在 `application.properties` 中开启下载目录访问:

properties
spring.mvc.static-path-pattern=/download/**
spring.resources.static-locations=file:/path/to/upload/files/
4.编写 download.html 页面:

html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>文件下载</title>
</head>
<body>
<form action="/download" method="get">
<label for="filename">文件名: </label>
<input type="text" id="filename" name="fileName"/>
<button type="submit">下载</button>
</form>
</body>
</html>
5.在 `index.html` 页面添加下载链接:

html
<a href="/download">下载文件</a>
这样,我们就实现了文件上传和下载的功能。

参考文章:http://blog.ncmem.com/wordpress/2023/12/05/%e4%bd%bf%e7%94%a8springboot%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd/

欢迎入群一起讨论

 

 

标签:文件,SpringBoot,boot,upload,file,上传,下载
From: https://www.cnblogs.com/songsu/p/17877124.html

相关文章

  • h5移动端使用video实现拍照、上传文件对象、选择相册,做手机兼容。
    html部分<template><divclass="views"><videostyle="width:100vw;height:calc(100vh-18vh)"object-fit="fill"></video><!--<imgstyle="width:100vw;height:calc(100vh-18vh)&......
  • springboot~构建webjars类型的前端jar包
    webjars类型的前端jar包我们可以将公用的js,css,html,vue,shtml打包成一个jar,然后在其他项目中引用,这样就不用每个项目都去引用一遍了,这样就可以实现前端的公用了。1.创建一个maven项目,添加依赖和插件<dependencies><!--依赖webjars-locator-core--><dep......
  • springboot集成swagger
    1.pom引入<!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency&......
  • 领导分享的微信小程序音乐请你帮忙下载
     早上领导分享了一个音乐给我,问我能不能下载,必须可以下载,安排:步骤分享:1.打开领导分享过来的音乐开始播放。2.打开手机上的文件管理器,依次找到目录“我的手机/Android/data/com.tencent.mm/MicroMsg/”,保证列表按时间排序,然后在靠前的位置找一个名字很长的文件夹,文件夹名是数......
  • 【SpringBootWeb入门-2】请求响应-请求-Postman工具
    JavaWeb开发最常见的就是各类数据的请求以及响应,在讲解请求参数接收内容之前,我们先来介绍一款功能强大的接口测试工具:Postman。Postman介绍:一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,作用:常用于进行接口测试。为什么要使用Postman?当前最为主流的开发模式是前后端分......
  • py通过链接爬取图片下载本地,提高数据自我掌握力
    (目录)前言不知道小伙伴们有没有一些困扰,一些数据以图片的形式存放在互联网上,我们想要使用图片里面的数据还需要自己的提取,然后经过一系列的整理之后才会达到我们想要的效果,而且整理数据还好,关键是难道这些图片真的需要我们自己一张一张的慢慢的右键,保存图片吗,那未免这样的效率......
  • 手把手教你如何下载哔哩哔哩(B站课堂)上已购买的视频课程
    前言:很多同学都想知道哔哩哔哩(B站课堂)中视频课程怎么下载,但是B站课堂上面已购买的视频课程是不提供直接下载方式的,所以下面就教大家如何用学无止下载器下载B站课堂上面已购买的视频课程。一、电脑网页打开哔哩哔哩官网,找到已购内容二、找到想要下载的课程,点开进入,并复制对应的......
  • 哔哩哔哩B站课堂视频课程下载工具,如何在电脑端下载B站课堂视频到本地
    一.安装B站课堂下载器1.获取学无止下载器https://www.xuewuzhi.cn/bilibili_downloader?from=cnblogs2.下载安装后,然后点击桌面快捷方式运行即可。注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。二.使用说明1.学无止下......
  • SpringBoot 如何实现文件上传和下载
    一、文件上传——upload<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>文件上传SpringBoot提供了Multipart文件上传的支持。Multipart是HTTP协议中的一种方式,用于支持文件上传。下面我们将介绍如......
  • Spring Boot中的文件上传和下载实现
    文件上传文件上传是Web应用程序中常见的功能之一,SpringBoot提供了MultipartFile接口来处理文件上传。以下是实现文件上传的步骤:添加依赖在pom.xml文件中添加以下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</art......