java - 无法使用 spring Rest Controller 下载静态 xml 文件

标签 java xml spring rest

这是我从 postman 测试时获取文件内容时的代码片段,但我希望文件在打开窗口时下载。

@Override
  public ResponseEntity<?> downloadXmlFile() {
    try {
       String FILE_PATH =new ClassPathResource(ApplicationConstants.my_xml).getFile().getPath();
       File file = new File(FILE_PATH);
       InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
         HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_PDF);
        headers.setContentDispositionFormData(file.getName(),file.getName());
        headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
         return new ResponseEntity<InputStreamResource>(resource,headers, HttpStatus.OK);
    } catch (Exception e) {
      LOG.error("Unexpected Exception occurred while serving the request" + e.getMessage());
      return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new BaseResponse(AccredoStatusCode.INTERNAL_SERVER_ERROR));
    }
  }

为什么我获取的是要下载的文件内容而不是 xml 文件?

最佳答案

我在下面使用过,它对我有用。

public ResponseEntity<?> getFile(@PathVariable String fileName) {
        try {

            String filePath = new ClassPathResource(fileName+".xml").getFile().getPath();
            File file = new File(filePath);
            InputStream xmlFileInputStream = new FileInputStream(file);

            HttpHeaders headers = new HttpHeaders();
            headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            /*headers.setContentType(MediaType.APPLICATION_XML);
            String filename = fileName+".xml";
            headers.setContentDispositionFormData(filename, filename);
            headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");*/
            return ResponseEntity.ok().headers(headers)
                    .contentType(MediaType.parseMediaType("application/octet-stream"))
                    .body(new InputStreamResource(xmlFileInputStream));
        }

关于java - 无法使用 spring Rest Controller 下载静态 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48023196/

相关文章:

java - JDBC-ODBC 问题 - 当有值时 Resultset.getString() 返回 null

java - 适用于 Java 的 OrientDB 架构迁移工具

c# - ReSharper 表示此表达式始终为真。为什么?

java - 如何将所有 .json URL 映射到特定 Controller

java - 使用 Java Spring 通过 SSH 执行命令

java - Hibernate EntityManager findById : javax. ejb.EJBException : java. lang.NullPointerException

xml - 哪些字符永远不能出现在 URL 中?

python - 解析 xml 并编写带有标题列的 csv

java - 在 Maven、Eclipse、Glassfish 中自动部署更改的 Java 代码

java - 对复杂类型的 ArrayList 进行排序