使用Spring的POST请求下载文件?

时间:2017-04-24 15:27:12

标签: java spring spring-data

使用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)

2 个答案:

答案 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上也可以正常工作。