首页 > 其他分享 >springboot实现文件的上传下载

springboot实现文件的上传下载

时间:2023-12-13 10:02:10浏览次数:30  
标签:文件 return springboot 上传下载 file 上传 public 下载

Spring Boot提供了简单易用的方式来处理文件上传和下载功能。下面是一个简单的示例:

创建一个文件上传的控制器

@RestController
public class FileUploadController {    private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);
    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            // 保存文件
            byte[] bytes = file.getBytes();
            Path path = Paths.get(file.getOriginalFilename());
            Files.write(path, bytes);            logger.info("文件上传成功:" + file.getOriginalFilename());
            return "文件上传成功:" + file.getOriginalFilename();
        } catch (IOException e) {
            logger.error("文件上传失败:" + e.getMessage());
            return "文件上传失败:" + e.getMessage();
        }
    }}

创建文件下载的控制器

@RestController
public class FileDownloadController {    private static final Logger logger = LoggerFactory.getLogger(FileDownloadController.class);
    @GetMapping("/download")
    public ResponseEntity<Resource> downloadFile() {
        try {
            // 加载文件资源
            Resource resource = new UrlResource("file:test.txt");
            String filename = resource.getFilename();
            String contentType = Files.probeContentType(Paths.get(filename));            return ResponseEntity.ok()
                    .contentType(MediaType.parseMediaType(contentType))
                    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"")
                    .body(resource);
        } catch (IOException e) {
            logger.error("文件下载失败:" + e.getMessage());
            return ResponseEntity.notFound().build();
        }
    }}

在应用程序中配置文件上传和下载的细节。

#文件上传配置
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.file-size-threshold=0

@Configuration
public class AppConfig implements WebMvcConfigurer {    //文件上传配置
    @Bean
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setDefaultEncoding("UTF-8");
        resolver.setMaxUploadSize(10485760);
        resolver.setMaxInMemorySize(4096);
        return resolver;
    }    //文件下载配置
    @Bean
    public ByteArrayResource byteArrayResource() {
        return new ByteArrayResource(new byte[0]);
    }    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/file/**")
                .addResourceLocations("file:/usr/local/data/");
    }}

在页面上传文件

<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">上传文件</button>
</form>



在页面下载文件
<a th:href="@{/download}" download="test.txt">下载文件</a>

这样就实现了文件上传和下载功能。当用户上传文件时,文件将被保存在应用程序的根目录中。当用户下载文件时,文件将从文件系统中加载并作为响应传输。

参考文章:http://blog.ncmem.com/wordpress/2023/12/05/springboot实现文件上传下载-3/


 

标签:文件,return,springboot,上传下载,file,上传,public,下载
From: https://blog.51cto.com/u_14023400/8798252

相关文章

  • Spring Boot中的文件上传和下载实现
    文件上传文件上传是Web应用程序中常见的功能之一,SpringBoot提供了MultipartFile接口来处理文件上传。以下是实现文件上传的步骤:添加依赖在pom.xml文件中添加以下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</arti......
  • Spring Boot实现文件上传和下载
    实现SpringBoot文件上传和下载的步骤:1.文件上传在pom.xml文件中添加依赖:spring-boot-starter-web和spring-boot-starter-thymeleaf。创建一个上传前端的页面,包括一个表单来选择文件和一个提交按钮。在Controller中添加一个POST方法,该方法接受MultipartFile参数,将文件保存在服务器......
  • 第七章 文件与数据格式化
    strip()方法删除多余空格:用户输入数据时,很有可能会无意中输入多余的空格,或者在一些场景中,字符串前后不允许出现空格和特殊字符,此时就需要去除字符串中的空格和特殊字符。这里的特殊字符,指的是制表符(\t)、回车符(\r)、换行符(\n)等。python中,字符串变量提供了3种方法来删除字符串......
  • BDF文件
    1.BDF文件是基于ASCLL的在windows系统和mac系统通用的字体格式,存储了Adobe的字体可读数据,必须存放在系统字体文件夹里才可以生效,BDF文件是程序可以引用的系统字体文件。可以用FontForge打开2.BDF文件是进制数据文件,是由读取数据分析程序创建,用于标识未使用的硬盘空间里健康状......
  • 【SpringBootWeb入门-11】MySQL-概述-安装配置
    1、入门前言之前的文章我们讲解了javaweb的springboot框架的入门学习,javaweb开发-数据库也是我们需要学习的核心之一,接下来我们进入MySQL的学习,本篇内容主要讲解MySQL的安装以及配置。2、MySQL下载MySQL官方给我们提供了两种不同的版本:商业版本和社区版本,具体区别如下图:我们......
  • 上机编程[文件目录权限管理系统]学习交流
    请你设计一个文件目录权限管理系统,实现以下功能:·  DirPermSystem(int[]path,int[]statuses) —— 初始化文件目录树及其初始状态o   path[i] 下标表示目录编号,值表示其上一级目录的编号(根目录编号为 0,path[0]固定为 -1)。o   statuses[i] 表示目录 i ......
  • 学习文件系统的数据结构
    学习文件系统的数据结构:深入理解计算机系统和操作系统运作的关键一步。以下是一份关于学习文件系统数据结构的学习总结,可能会帮助你系统地回顾所学的知识:inode(索引节点):1.inode是文件系统中非常重要的数据结构,它存储了文件的元数据,包括文件的大小、权限、拥有者等信息。2.理......
  • 使用git工具将本地文件上传到github仓库
    使用git工具将本地文件上传到github仓库一、基本步骤第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹)。第二步:在命令行中输入gitinit把这个文件夹变成Git可管理的仓库然后通过gitadd.("."表示当前文件夹下所有内容都提交,也可以通过gitaddFileName/FolderName......
  • C语言-文件操作
    在接触文件操作之前,我们写的程序都是在内存中存储着,一旦程序结束内存中存储的数据都会被擦除,所以如果想要程序结束数据仍然要保留,那就需要将其持久化,就需要用文件操作,将需要保留的数据存储在硬盘中。下次使用时再打开即可。那么关于文件主要介绍以下几个部分:什么是文件磁盘上的文件......
  • SpringBoot MongoTemplate 实现分页
    一、MongoTemplate实现分页springboot集成Mongodb好像没有现成的分页工具,只能自己先查总数再查数据,需要进行两次查询。例如:@Testpublicvoidtest_119()throwsException{Queryquery=newQuery();longtotal=mongoTemplate.count(query,Dog.class);query.w......