스프링 부트로 웹 응용 프로그램을 개발하고 있습니다. 응용 프로그램에서 파일을 업로드하고 해당 파일의 절대 경로가 데이터베이스에 저장된 후 로컬 폴더에 복사합니다. 그래서 파일이 있는데 어디 있는지 알지만 로컬 호스트에서는 접근 할 수 없습니다. 저는 봄에 정적 파일을위한 정적 폴더를 가지고 있지만 다른 어플리케이션에서이 데이터를 사용할 것이기 때문에 파일을 복사하고 싶지는 않다는 것을 알고 있습니다. 예를 들어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);
}
실제 위치에서 파일을 읽는 컨트롤러를 만들 수 있습니다.하지만'localhost : 8080' 양식에서 설명한대로'@ RequestMapping'을 통해 매핑하십시오. – sfat
classpath를 사용하여 데이터 폴더에서 파일을 가져 와서 절대 경로. – kc007