首页 > 解决方案 > Spring FileSystemResource 在保留原始文件名的同时下载文件

问题描述

我想下载一个文件,同时保留文件的文件名。

我有:

    @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”。

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

标签: javaspring

解决方案


您可以在 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);
  }

推荐阅读