Spring FileSystemResource在保留原始文件名的同时下载文件

时间:2019-06-07 07:14:22

标签: java spring

我想在保留文件名的同时下载文件。

我有:

    @RequestMapping(value = "/downloadFile", method = RequestMethod.GET,  produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    @ResponseBody
    public FileSystemResource getFile(@RequestParam(value="filename") String filename) {
        return new FileSystemResource(uploadDir + "/" + filename); 
    }

我可以下载文件,但下载的文件名始终为“ downloadFile.pdf”或“ downloadFile.png”。

如何保留原始文件名?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在Spring中尝试以下代码。

@GetMapping(value = "/downloadFile", method = RequestMethod.GET,  produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
  public ResponseEntity<?> downloadFile(@RequestParam(value="filename") String filename) {
    String dirPath = "your-location-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);
  }