我想制作一个rest api控制器(弹簧启动),当与get一起请求时,它将允许我下载一个excel文件.目前,我有这个端点:
i want to make a rest api controller (spring boot) that when petitioned with a get will allow me to download an excel file. currently i have this endpoint:
@RequestMapping(value = "/download.xls", method = RequestMethod.GET) public ResponseEntity Survey_Reports(@RequestParam(value = "evaluated") String evaluated){ return surveyService.getSurveysFile(evaluated); }最终调用此方法:
public static ResponseEntity getDownloadResponse() { File file2Upload = new File("Survey_Reports.xls"); Path path = Paths.get(file2Upload.getAbsolutePath()); ByteArrayResource resource = null; try { resource = new ByteArrayResource(Files.readAllBytes(path)); } catch (IOException e) { logger.error("there was an error getting the file bytes ", e); } return ResponseEntity.ok() .contentLength(file2Upload.length()) //this line doesnt seem to work as i set the file format in the controller request mapping .contentType(MediaType.parseMediaType("application/vnd.ms-excel")) .body(resource); }当我获得download.xls(作为映射)文件的正确性时,一切似乎都可以正常工作,但是现在我想使下载的文件具有某些特定名称,例如:ratedName.xls或userDateEndDate.xls或其他一些名称东西,有没有办法编辑响应实体来做到这一点?这样我就不必将映射命名为"download.xls"
everything seems to work semi-fine as i get the download.xls(as the mapping) file correclty, but now i want to make the downloaded file have some specific name like: evaluatedName.xls or userDateEndDate.xls or some other stuff, is there a way to edit the response entity to do so? so that i dont have to name the mapping "download.xls"
推荐答案在 HttpServletResponse响应的上下文中,您可以这样做
In context of HttpServletResponse response you can do this like this
response.setContentType("application/csv"); response.setHeader("Content-Disposition", "attachment; filename=" + csvName);,对于 ResponseEntity ,我假设您可以使用类似以下的内容:
and for ResponseEntity i assume you can use something like this:
ResponseEntity.ok().header("Content-Disposition","attachment; filename=" + csvName );更多推荐
下载文件java spring rest api
发布评论