SpringBoot 文件处理
在本章中,将学习如何使用Web服务上载和下载文件。
上传文件
对于上载文件,要将MultipartFile用作请求参数,此API应使用多部分表单数据值。 观察下面给出的代码 -
@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String fileUpload(@RequestParam("file") MultipartFile file) {
return null;
}
下面给出了相同的完整代码 -
package com.codeinn.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 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");
ResponseEntityresponseEntity = ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(
MediaType.parseMediaType("application/txt")).body(resource);
return responseEntity;
}
下面给出了相同的完整代码 -
package com.codeinn.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");
ResponseEntityresponseEntity = ResponseEntity.ok().headers(headers).contentLength(
file.length()).contentType(MediaType.parseMediaType("application/txt")).body(resource);
return responseEntity;
}
}
主要的Spring Boot应用程序如下 -
package com.codeinn.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.0com.codeinndemo0.0.1-SNAPSHOTjardemoDemo project for Spring Bootorg.springframework.bootspring-boot-starter-parent1.5.8.RELEASEGradle构建文件 - build.gradle 的代码如下 -UTF-8 UTF-8 1.8 org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-maven-plugin
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 = 'com.codeinn'
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,可以使用下面显示的命令 -
gradle clean build
在“BUILD SUCCESSFUL”之后,在build/libs 目录下找到JAR文件。
现在,使用以下命令运行JAR文件 -
java –jar这将在Tomcat端口8080上启动应用程序。
现在点击 POSTMAN 应用程序中的以下URL,可以看到如下所示的输出 -
文件上传 - http://localhost:8080/upload
文件下载 - http://localhost:8080/download
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:SpringBoot 文件处理
本文地址:http://www.codeinn.net/springboot/1676.html
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:SpringBoot 文件处理
本文地址:http://www.codeinn.net/springboot/1676.html


