首页 > 其他分享 >Spring Boot中的文件上传和下载实现

Spring Boot中的文件上传和下载实现

时间:2023-12-13 10:01:54浏览次数:26  
标签:文件 Spring Boot file 上传 下载

文件上传
文件上传是Web应用程序中常见的功能之一,Spring Boot提供了MultipartFile接口来处理文件上传。以下是实现文件上传的步骤:

添加依赖
在pom.xml文件中添加以下依赖:

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

创建上传页面
在HTML页面中添加上传表单,例如:

<form method="POST" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <button type="submit">上传</button>
</form>

在表单中使用POST请求将文件上传到/upload路径。

实现上传接口
在Spring Boot应用程序中实现上传接口,例如:

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
    String fileName = file.getOriginalFilename();
    byte[] bytes = file.getBytes();
    Path path = Paths.get("uploads/" + fileName);
    Files.write(path, bytes);
    return "上传成功!";
}

在上面的代码中,我们使用@RequestParam注解来获取上传的文件,使用MultipartFile接口来处理文件上传,使用Files.write()方法将文件写入到指定路径。

配置上传文件大小限制
默认情况下,Spring Boot限制上传文件的大小为1MB。如果需要上传更大的文件,可以在application.properties文件中添加以下配置:

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

在上面的配置中,我们将上传文件的大小限制为10MB。

文件下载
文件下载是Web应用程序中另一个常见的功能,Spring Boot提供了ResourceLoader接口和Resource类来处理文件下载。以下是实现文件下载的步骤:

实现下载接口
在Spring Boot应用程序中实现下载接口,例如:

@GetMapping("/download")
public ResponseEntity<Resource> download(@RequestParam("file") String fileName) throws IOException {
    Resource resource = new FileSystemResource("uploads/" + fileName);
    HttpHeaders headers = new HttpHeaders();
    headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"");
    return ResponseEntity.ok().headers(headers).body(resource);
}



在上面的代码中,我们使用@RequestParam注解来获取要下载的文件名,使用ResourceLoader接口和Resource类来加载要下载的文件,使用ResponseEntity类来返回文件内容,使用HttpHeaders类来设置响应头。

配置下载文件大小限制
默认情况下,Spring Boot不限制下载文件的大小。如果需要限制下载文件的大小,可以在application.properties文件中添加以下配置:

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

在上面的配置中,我们将下载文件的大小限制为10MB。

以上是在Spring Boot中实现文件上传和下载的步骤。除了上述方法,还可以使用第三方库来实现文件上传和下载功能,例如Apache Commons FileUpload和Apache Commons IO。

使用Apache Commons FileUpload实现文件上传的步骤如下:

添加依赖
在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
</dependency>



实现上传接口
在Spring Boot应用程序中实现上传接口,例如:

@PostMapping("/upload")
public String upload(HttpServletRequest request) throws Exception {
    ServletFileUpload upload = new ServletFileUpload();
    FileItemIterator iter = upload.getItemIterator(request);
    while (iter.hasNext()) {
        FileItemStream item = iter.next();
        String fileName = item.getName();
        InputStream inputStream = item.openStream();
        // 处理上传的文件
    }
    return "上传成功!";
}



在上面的代码中,我们使用ServletFileUpload类来处理文件上传,使用FileItemIterator类和FileItemStream类来遍历上传的文件,使用InputStream类来读取上传的文件内容。

使用Apache Commons IO实现文件下载的步骤如下:

添加依赖
在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>



实现下载接口
在Spring Boot应用程序中实现下载接口,例如:

@GetMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam("file") String fileName) throws IOException {
    File file = new File("uploads/" + fileName);
    byte[] bytes = FileUtils.readFileToByteArray(file);
    HttpHeaders headers = new HttpHeaders();
    headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"");
    return ResponseEntity.ok().headers(headers).body(bytes);
}



在上面的代码中,我们使用FileUtils类来读取要下载的文件内容,使用ResponseEntity类来返回文件内容,使用HttpHeaders类来设置响应头。

以上是在Spring Boot中实现文件上传和下载的方法,选择适合自己的方法进行实现即可。

 

参考文章:http://blog.ncmem.com/wordpress/2023/12/04/spring-boot中的文件上传和下载实现/


标签:文件,Spring,Boot,file,上传,下载
From: https://blog.51cto.com/u_14023400/8798260

相关文章

  • Spring Boot实现文件上传和下载
    实现SpringBoot文件上传和下载的步骤:1.文件上传在pom.xml文件中添加依赖:spring-boot-starter-web和spring-boot-starter-thymeleaf。创建一个上传前端的页面,包括一个表单来选择文件和一个提交按钮。在Controller中添加一个POST方法,该方法接受MultipartFile参数,将文件保存在服务器......
  • spring使用druid多数据源yml密码加密
    1.依赖<!--Mysql驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.24</version></dependency><!--Druid--><dependency>......
  • 【SpringBootWeb入门-11】MySQL-概述-安装配置
    1、入门前言之前的文章我们讲解了javaweb的springboot框架的入门学习,javaweb开发-数据库也是我们需要学习的核心之一,接下来我们进入MySQL的学习,本篇内容主要讲解MySQL的安装以及配置。2、MySQL下载MySQL官方给我们提供了两种不同的版本:商业版本和社区版本,具体区别如下图:我们......
  • 使用git工具将本地文件上传到github仓库
    使用git工具将本地文件上传到github仓库一、基本步骤第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹)。第二步:在命令行中输入gitinit把这个文件夹变成Git可管理的仓库然后通过gitadd.("."表示当前文件夹下所有内容都提交,也可以通过gitaddFileName/FolderName......
  • SpringBoot MongoTemplate 实现分页
    一、MongoTemplate实现分页springboot集成Mongodb好像没有现成的分页工具,只能自己先查总数再查数据,需要进行两次查询。例如:@Testpublicvoidtest_119()throwsException{Queryquery=newQuery();longtotal=mongoTemplate.count(query,Dog.class);query.w......
  • java文件的上传与下载
    1、文件上传下载1.1文件上传什么是文件上传?要将客户端(浏览器)大数据存储到服务器端,不将数据直接存储到数据库中,而是要将数据存储到服务器所在的磁盘上,这就要使用文件上传。为什么使用文件上传?通过文件上传,可以将浏览器端的大数据直接保存到服务器端。不将数据保存到数据库中......
  • Java Spring Boot 拦截器的使用小结
    很多时候,我们在开发项目中,总是希望在接口中,尽量进行业务处理,其余的事项交给其他组件来处理,比如:登录验证日志记录接口性能在SpringBoot中,正如大多数框架一样,可以用到拦截件进行处理,不管叫中间件还是拦截件,总之都是为了让我们更好的专注于业务,解耦功能。我们看看SpringB......
  • select for update在springboot里实现分布式锁
    //mapper,注意,这里的参数最好就是主键或者唯一键,否则产生的是表锁@Select("<script>select*fromfoowhereid=#{id}forupdate</script>")FooselectForUpdateById(@Param("id")Longid);//service,必须加事物,否则selectForUpdateById无法实现分布式锁的作用@Transac......
  • uboot移植及图形化配置
    一、编译通过官方的uboot,修改uboot,参考文档一些配置文件,lcd、网络配置二、图形化配置界面1.指定默认配置文件makemx6ull_alientek_emmc_defconfig2.打开图形化配置界面makemenuconfig3.完成配置后编辑完成之后要保存好当前的配置文件如./configs/test_defconfigsave ......
  • java实现文件上传和下载
    本文实例为大家分享了java实现文件上传和下载的具体代码,供大家参考,具体内容如下文件的上传upload:文件上传客户端通过表单的文件域file 把客户端的文件上传保存到服务器的硬盘上页面首先对上传的表单有以下要求:必须有文件域:inputtype=file表单提交方式:method=post表......