zoukankan      html  css  js  c++  java
  • Spring Boot文件处理

    对于上载文件,要将MultipartFile用作请求参数,此API应使用多部分表单数据值。 观察下面给出的代码 -

    @RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    
    public String fileUpload(@RequestParam("file") MultipartFile file) {
       return null;
    }//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/spring-boot/spring_boot_file_handling.html
    package com.yiibai.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";
       }
    }//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/spring-boot/spring_boot_file_handling.html

    文件下载

    对于文件下载,应该使用InputStreamResource下载文件。需要在Response中设置HttpHeader Content-Disposition,并且需要指定应用程序的响应Media Type

    注 - 在以下示例中,文件应在运行应用程序的指定路径上可用。

    //原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/spring-boot/spring_boot_file_handling.html
    @RequestMapping(value = "/download", method = RequestMethod.GET) 
    public ResponseEntity<Object> downloadFile() 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<Object> 
       responseEntity = ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(
          MediaType.parseMediaType("application/txt")).body(resource);
    
       return responseEntity;
    }//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/spring-boot/spring_boot_file_handling.html
    package com.yiibai.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 ResponseEntity<Object> downloadFile() 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<Object> 
          responseEntity = ResponseEntity.ok().headers(headers).contentLength(
             file.length()).contentType(MediaType.parseMediaType("application/txt")).body(resource);
    
          return responseEntity;
       }
    }//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/spring-boot/spring_boot_file_handling.html

    Maven构建文件 - pom.xml 的代码如下 -

    <?xml version = "1.0" encoding = "UTF-8"?>
    <project xmlns = "http://maven.apache.org/POM/4.0.0" 
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
       http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    
       <modelVersion>4.0.0</modelVersion>
       <groupId>com.yiibai</groupId>
       <artifactId>demo</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <packaging>jar</packaging>
       <name>demo</name>
       <description>Demo project for Spring Boot</description>
    
       <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>1.5.8.RELEASE</version>
          <relativePath/> 
       </parent>
    
       <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
       </properties>
    
       <dependencies>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
    
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
          </dependency>
       </dependencies>
    
       <build>
          <plugins>
             <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
          </plugins>
       </build>
    
    </project>//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/spring-boot/spring_boot_file_handling.html
  • 相关阅读:
    ADB高级应用
    struts2 结合extjs实现的一个登录实例
    css3中关于伪类的使用
    漫谈并发编程(三):共享受限资源
    awk依照多个分隔符进行切割
    3星|《财经天下周刊》2017年21期:海外购几乎是亚马逊中国的最后一根救命稻草
    3星|《迷失的盛宴:中国保险产业1978-2014》:序言比正文精彩
    3星|《超级运营术》:互联网社区运营老手经验谈
    3星|《百年流水线》:流水线与工业、社会、艺术的交互史
    5星|戴蒙德《为什么有的国家富裕,有的国家贫穷》:为什么有的国家能发展出好制度
  • 原文地址:https://www.cnblogs.com/0710whh/p/12391111.html
Copyright © 2011-2022 走看看