zoukankan      html  css  js  c++  java
  • SpringBoot文件的上传与下载

    ⒈文件实体类

     1 package cn.coreqi.security.entities;
     2 
     3 public class FileInfo {
     4 
     5     private String path;
     6 
     7     public FileInfo(String path) {
     8         this.path = path;
     9     }
    10 
    11     public String getPath() {
    12         return path;
    13     }
    14 
    15     public void setPath(String path) {
    16         this.path = path;
    17     }
    18 }

    ⒉控制器代码

     1 package cn.coreqi.security.controller;
     2 
     3 import cn.coreqi.security.entities.FileInfo;
     4 import org.apache.tomcat.util.http.fileupload.IOUtils;
     5 import org.springframework.web.bind.annotation.GetMapping;
     6 import org.springframework.web.bind.annotation.PathVariable;
     7 import org.springframework.web.bind.annotation.PostMapping;
     8 import org.springframework.web.bind.annotation.RestController;
     9 import org.springframework.web.multipart.MultipartFile;
    10 
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 import java.io.*;
    14 import java.util.Date;
    15 
    16 @RestController
    17 public class FileController {
    18 
    19     @PostMapping("/file")
    20     public FileInfo upload(MultipartFile file) throws IOException {
    21         System.out.println(file.getName()); //文件名
    22         System.out.println(file.getOriginalFilename()); //原始文件名
    23         String folder = "d:/test";
    24         File localFile = new File(folder,new Date().getTime() + ".txt");
    25         file.transferTo(localFile); //将上传的文件写入到本地的文件中
    26         return new FileInfo(localFile.getAbsolutePath());   //绝对路径
    27     }
    28 
    29     @GetMapping("/file/{id}")
    30     public void download(@PathVariable String id, HttpServletRequest request, HttpServletResponse response){
    31         try(
    32                 InputStream inputStream = new FileInputStream(new File("d:/test/1553692860875.txt"));
    33                 OutputStream outputStream = response.getOutputStream();
    34                 ) {
    35             response.setContentType("application/x-download");
    36             response.addHeader("Content-Disposition","attachment;filename=test.txt");
    37             IOUtils.copy(inputStream,outputStream);
    38             outputStream.flush();
    39 
    40         } catch (FileNotFoundException e) {
    41             e.printStackTrace();
    42         } catch (IOException e) {
    43             e.printStackTrace();
    44         }
    45     }
    46 }

    ⒊测试

     1     /**
     2      * 上传文件测试
     3      */
     4     @Test
     5     public void whenUploadSuccess() throws Exception {
     6         //mockMvc.perform(MockMvcRequestBuilders.fileUpload("/file")
     7         String result = mockMvc.perform(MockMvcRequestBuilders.multipart("/file")
     8                 .file(new MockMultipartFile("file","test.txt","multipart/form-data","hello upload".getBytes("UTF-8"))))
     9                 .andExpect(status().isOk())
    10                 .andReturn().getResponse().getContentAsString();
    11         System.out.println(result);
    12     }
  • 相关阅读:
    USACO Section 1.4 Mother's Milk
    USACO Section 1.5 Checker Challenge
    USACO Section 1.5 Number Triangles
    九度 1140 八皇后
    九度 1091 棋盘游戏
    USACO Section 2.1 Sorting A ThreeValued Sequence
    USACO Section 1.4 The Clocks
    USACO Section 1.5 Superprime Rib
    USACO Section 2.1 Ordered Fractions
    双目测距与三维重建
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10611005.html
Copyright © 2011-2022 走看看