⒈文件实体类
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 }