저장소에서 이미지를 반환하는 Spring 컨트롤러 메서드를 작성하고 싶습니다. 아래는 현재 버전이지만 두 가지 문제가 있습니다.
- @GetMapping 주석에는 미디어 유형의 문자열 배열 인 'produces'매개 변수가 필요합니다. 해당 매개 변수가 없으면 프로그램이 작동하지 않습니다. 이미지 데이터를 텍스트로 표시합니다. 문제는 추가 미디어 유형을 지원하려면 프로그램을 다시 컴파일해야한다는 것입니다. viewImg 메서드 내부에서 'produces'미디어 유형을 설정하는 방법이 있습니까?
- 아래 코드는 svg를 제외한 모든 이미지 유형을 표시하며 "오류가 포함되어있어 이미지를 표시 할 수 없습니다"라는 메시지 만 표시합니다. 웹 브라우저 (Firefox)는이를 "webp"미디어 유형으로 식별합니다. 그러나 "image / svg + xml"항목을 제외하고 'produces'문자열 배열에서 모든 미디어 유형을 제거하면 이미지가 표시됩니다.
보다 일반적이고 (모든 미디어 유형에서 작동하도록) svg 미디어 유형에 문제가없는 컨트롤러 메서드를 작성하는 방법을 알려주십시오.
내 테스트 코드는 다음과 같습니다.
@GetMapping(value = "/pic/{id}",
produces = {
"image/bmp",
"image/gif",
"image/jpeg",
"image/png",
"image/svg+xml",
"image/tiff",
"image/webp"
}
)
public @ResponseBody
byte[] viewImg(@PathVariable Long id) {
byte[] data = new byte[0];
String inputFile = "/path/to/image.svg";
try {
InputStream inputStream = new FileInputStream(inputFile);
long fileSize = new File(inputFile).length();
data = new byte[(int) fileSize];
inputStream.read(data);
} catch (IOException e) {
e.printStackTrace();
}
return data;
}