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
  • 相关阅读:
    参数是指针,传递指针变量,最后函数总分配的内存丢了
    GoDaddy域名注册/空间购买优惠码
    Godaddy主机新建网站说明
    Godaddy主机购买图解教程
    Godaddy 如何添加独立IP到主机账户
    GoDaddy域名注册图解
    Godaddy windows主机添加域名,删除域名,添加子域名 操作说明
    ASP.net与PHP两大网站开发架构优势对比
    Godaddy如何导入导出MSSQL数据库
    什么是DSN文件
  • 原文地址:https://www.cnblogs.com/0710whh/p/12391111.html
Copyright © 2011-2022 走看看