Spring Boot文件处理,在本章中,您将学习如何使用 Web 服务上传和下载文件。
上传文件
对于上传文件,您可以使用MultipartFile作为请求参数,此 API 应使用 Multi-Part 表单数据值。观察下面给出的代码 –
@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public String fileUpload(@RequestParam("file") MultipartFile file) { return null; }
下面给出了相同的完整代码 –
package net.zuze.demo.controller; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class FileUploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public String fileUpload(@RequestParam("file") MultipartFile file) throws IOException { File convertFile = new File("/var/tmp/"+file.getOriginalFilename()); convertFile.createNewFile(); FileOutputStream fout = new FileOutputStream(convertFile); fout.write(file.getBytes()); fout.close(); return "File is upload successfully"; } }
文件下载
对于文件下载,您应该使用 InputStreamResource 下载文件。我们需要在Response中设置HttpHeader Content-Disposition,需要指定应用的响应Media Type。
注意– 在以下示例中,文件应该在应用程序运行的指定路径上可用。
@RequestMapping(value = "/download", method = RequestMethod.GET) public ResponseEntity
下面给出了相同的完整代码 –
package net.zuze.demo.controller; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class FileDownloadController { @RequestMapping(value = "/download", method = RequestMethod.GET) public ResponseEntitydownloadFile() throws IOException { String filename = "/var/tmp/mysql.png"; File file = new File(filename); InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getName())); headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); headers.add("Pragma", "no-cache"); headers.add("Expires", "0"); ResponseEntity responseEntity = ResponseEntity.ok().headers(headers).contentLength( file.length()).contentType(MediaType.parseMediaType("application/txt")).body(resource); return responseEntity; } }
下面给出了主要的 Spring Boot 应用程序 –
package net.zuze.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Maven 构建的代码 – pom.xml 如下 –
4.0.0 net.zuze demo 0.0.1-SNAPSHOT jar demo Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.5.8.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
Gradle 构建的代码 – build.gradle 如下 –
buildscript { ext { springBootVersion = '1.5.8.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' group = 'net.zuze' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
现在您可以创建一个可执行的 JAR 文件,并使用下面给出的 Maven 或 Gradle 命令运行 Spring Boot 应用程序 –
对于 Maven,使用下面给出的命令 –
mvn clean install
“BUILD SUCCESS”后,你可以在target目录下找到JAR文件。
对于 Gradle,您可以使用如下所示的命令 –
sgradle clean build
“BUILD SUCCESSFUL”后,您可以在build/libs 目录下找到JAR 文件。
现在,使用以下命令运行 JAR 文件 –
java –jar
这将在 Tomcat 端口 8080 上启动应用程序.
现在在 POSTMAN 应用程序中点击以下 URL,您可以看到如下所示的输出 –
文件上传 – http://localhost:8080/upload
文件下载 – http://localhost:8080/upload
Spring Boot文件处理 推荐