使用Spring下载文件,我正在使用GET方法。
@RequestMapping(value = "/exportar/{tipo}", method = RequestMethod.GET)
@ResponseBody
public void exportar(HttpServletResponse response,@PathVariable TipoEnum tipo) throws IOException{
File file = service.exportar(tipo);
response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getName() + ".xls"));
response.setContentType("application/ms-excel; charset=UTF-8");
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
FileCopyUtils.copy(inputStream, response.getOutputStream());
}
如何使用POST实现此目的?这可能吗?
@RequestMapping(value = "/exportar", method = RequestMethod.POST)
答案 0 :(得分:0)
我只是在Insomnia REST客户端中重现了此错误。
添加标头后:
'Content-type': 'application/json'
问题似乎已解决。
答案 1 :(得分:0)
下面是我的示例工作代码,我使用的是ResponseEntity,也可以不用这样做。
@PostMapping("/document/{documentId}")
@Timed
public ResponseEntity<byte[]> getDocumentById(@Valid @PathVariable Long documentId, ) throws MalformedURLException {
return ResponseEntity.ok().header("Content-Disposition", "attachment; filename=" + caseId.toString().concat("_Document.pdf")).body(superBillGenerator.generateSuperBill(caseId, type));
}
以前是GET调用,但在POST上也可以正常工作。