SpringMvc中文件的下载和与其相关的测试
文件似乎并不是找工作面试中遇到的主要问题,但是我们也许会在一些学校的作业中遇到。
文章包含了实现以及测试,这样也许能帮助到一些像我一样基础不太好的读者。
以下将展示文件下载的实现和测试部分的代码,希望能给其他人一些启发。
一些参数写死了是为了方便理解。
//Controller部分
@RequestMapping(value ="/testDownload")
@ResponseBody
public ResponseEntity<byte []> testDownload(HttpServletRequest request) throws IOException {
File file = new File("C:\\Users\\asus\\Pictures\\Saved Pictures\\1.png");
HttpHeaders headers = new HttpHeaders();
HttpStatus statusCode = HttpStatus.CREATED;
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// 设置响应文件名称
headers.setContentDispositionFormData("attachment;",file.getName());
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, statusCode);
return entity;
}
//测试部分
@Test
public void testDownload()throws Exception{
MvcResult result=mockMvc.perform(MockMvcRequestBuilders.get("/testDownload"))
.andReturn();
//创建一个新文件
File file =new File("C:\\Users\\asus\\Pictures\\Saved Pictures\\2.png");
MockHttpServletResponse response=result.getResponse();
InputStream inputStream =(InputStream)new ByteArrayInputStream(response.getContentAsByteArray());
//获取响应得到的数据并写入新文件
FileUtils.copyInputStreamToFile(inputStream, file);
}