복붙노트

[SPRING] 스프링 MVC 컨트롤러에서 XML 파일 반환

SPRING

스프링 MVC 컨트롤러에서 XML 파일 반환

나는 컨트롤러 함수에서 파일을 반환하기 위해 많은 노력을했다.

이것은 내 기능이다.

@RequestMapping(value = "/files", method = RequestMethod.GET)
@ResponseBody public FileSystemResource getFile() {
     return new FileSystemResource(new File("try.txt")); 
}

이 오류 메시지가 나타납니다.

누구든지 그것을 해결하는 방법을 알고 있습니까?

그리고 클라이언트 (JavaScript, jQuery)에서 어떻게 보내야합니까?

해결법

  1. ==============================

    1.편집 2 : 우선 - 하단에있는 편집 1 참조 - 그게 옳은 방법. 그러나 serializer가 작동하지 않는 경우이 솔루션을 사용하여 XML 파일을 문자열로 읽은 다음 사용자에게 저장할 것을 약속합니다.

    편집 2 : 우선 - 하단에있는 편집 1 참조 - 그게 옳은 방법. 그러나 serializer가 작동하지 않는 경우이 솔루션을 사용하여 XML 파일을 문자열로 읽은 다음 사용자에게 저장할 것을 약속합니다.

    @RequestMapping(value = "/files", method = RequestMethod.GET)
    public void saveTxtFile(HttpServletResponse response) throws IOException {
    
        String yourXmlFileInAString;
        response.setContentType("application/xml");
        response.setHeader("Content-Disposition", "attachment;filename=thisIsTheFileName.xml");
    
        BufferedReader br = new BufferedReader(new FileReader(new File(YourFile.xml)));
        String line;
        StringBuilder sb = new StringBuilder();
    
        while((line=br.readLine())!= null){
            sb.append(line);
        }
    
        yourXmlFileInAString  = sb.toString();
    
        ServletOutputStream outStream = response.getOutputStream();
        outStream.println(yourXmlFileInAString);
        outStream.flush();
        outStream.close();
    }
    

    그 일을해야합니다. 그러나 브라우저는 URL 내용을 캐시하므로 파일 당 고유 한 URL을 사용하는 것이 좋습니다.

    편집하다:

    추가 검사를 마친 후에는 액션에 다음 코드를 추가하여 작동되도록해야합니다.

    response.setContentType("text/plain");
    

    (또는 XML 용)

    response.setContentType("application/xml");
    

    따라서 전체 솔루션은 다음과 같아야합니다.

    @RequestMapping(value = "/files", method = RequestMethod.GET)
    @ResponseBody public FileSystemResource getFile(HttpServletResponse response) {
        response.setContentType("application/xml");
        return new FileSystemResource(new File("try.xml")); //Or path to your file 
    }
    
  2. from https://stackoverflow.com/questions/31564928/return-xml-file-from-spring-mvc-controller by cc-by-sa and MIT license