2017-12-26 10 views
-1

스프링 부트로 웹 응용 프로그램을 개발하고 있습니다. 응용 프로그램에서 파일을 업로드하고 해당 파일의 절대 경로가 데이터베이스에 저장된 후 로컬 폴더에 복사합니다. 그래서 파일이 있는데 어디 있는지 알지만 로컬 호스트에서는 접근 할 수 없습니다. 저는 봄에 정적 파일을위한 정적 폴더를 가지고 있지만 다른 어플리케이션에서이 데이터를 사용할 것이기 때문에 파일을 복사하고 싶지는 않다는 것을 알고 있습니다. 예를 들어localhost에서 로컬 파일에 액세스하는 방법

:

로컬 파일 위치 : /Users/user/data/image.png

내가 그런 식으로 도달하고자 : http://localhost:8080/data/image.png


편집 : 나는 해결책을 찾을 수 있습니다. 여기에 MvcUriComponentsBuilder을 사용했습니다.

String url = MvcUriComponentsBuilder.fromMethodName(FileController.class,"serveFile",resource.getFilename()).build().toString(); 

컨트롤러 방법의 반환 값입니다.

은 방법 :

@GetMapping("/files/{filename:.+}") 
    @ResponseBody 
    public ResponseEntity<Resource> serveFile(@PathVariable String filename) { 

     Resource file = storageService.loadAsResource(filename); 
     return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, 
       "attachment; filename=\"" + file.getFilename() + "\"").body(file); 
    } 
+0

실제 위치에서 파일을 읽는 컨트롤러를 만들 수 있습니다.하지만'localhost : 8080' 양식에서 설명한대로'@ RequestMapping'을 통해 매핑하십시오. – sfat

+0

classpath를 사용하여 데이터 폴더에서 파일을 가져 와서 절대 경로. – kc007

답변

0

나는 문제가 사용하는 URL을 함께 생각합니다. 변경 :

@RequestMapping("/data/{filename:.+}") 

이 작업을 수행하십시오.

+0

이것은 해결책이기도합니다. –

관련 문제