下载文件java spring rest api [英] download file java spring rest api

查看:481
本文介绍了下载文件java spring rest api的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想制作一个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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆