为了账号安全,请及时绑定邮箱和手机立即绑定

Spring构建CSV字符串并用它下载文件

Spring构建CSV字符串并用它下载文件

海绵宝宝撒 2023-03-31 14:41:28
我想要的是当我访问/getcsv下载一个csv file@RequestMapping(value = "/getcsv", method = RequestMethod.GET)public void getCSV(HttpServletResponse response){    String csv = "a,b";    response.setContentType("text/csv");    //what to do now?}我不知道如何激发csv file包含我的字符串的下载。
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以在响应的输出流中写入数据。


    @RequestMapping(value = "/getcsv", method = RequestMethod.GET)

    public void getCSV(HttpServletResponse response){


        String csv = "a,b";

        response.setContentType("application/octet-stream");

        response.setHeader("Content-Disposition", "fileName.csv");

        response.setHeader("Access-Control-Expose-Headers","Authorization, Content-Disposition");

        try (PrintWriter pw = new PrintWriter(response.getOutputStream())) {

            pw.write(csv);

        }

    }


查看完整回答
反对 回复 2023-03-31
?
弑天下

TA贡献1818条经验 获得超8个赞

您可以尝试以下代码。


@PostMapping(value = "/getcsv", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)

  public ResponseEntity<?> downloadFile(@RequestParam("fileName") String fileName) {

    String dirPath = "E:/some-directory-path/";

    byte[] fileBytes = null;

    try {

      fileBytes = Files.readAllBytes(Paths.get(dirPath + fileName));

    } catch (IOException e) {

      e.printStackTrace();

    }

    return ResponseEntity.ok()

        .contentType(MediaType.APPLICATION_OCTET_STREAM)

        .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"")

        .body(fileBytes);

  }

您必须设置为 Application Octet Stream 才能下载任何文件。


查看完整回答
反对 回复 2023-03-31
  • 2 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信