이미지를 포함하고 봄 부팅 자원 폴더에서 파일을 첨부 할 수없는이미지를 포함하고 봄 부팅 자원 폴더에서 파일을 첨부하는 방법
나는 봄 부팅 (JAR 파일이 아닌 전쟁 파일을 사용하여 RESTful 웹 서비스를 만들었습니다). 일부 서비스는 이메일을 보내고 일부는 첨부 파일이있는 이메일을 전송합니다 (동적으로 생성됩니다). 웹 파트 (Angular)는 다른 서버에 배포 된 Apache 서버에 있습니다.
이메일을 작성하고 Amazon SES를 사용하여 이메일을 보내려면 Freemarker 템플릿을 사용하고 있습니다. 프리 마커 템플릿에서
<IMG src="cid:gridEmailHeaderImage">
코드 이미지 I가 포함 나는 절대 경로를 제공하는 경우 파일을 첨부 할 수 있어요
MimeBodyPart inlineImage = new MimeBodyPart();
DataSource fds = new FileDataSource(imagePath.getAbsolutePath());
inlineImage.setDataHandler(new DataHandler(fds));
inlineImage.setHeader("Content-ID", "<" + contentId + ">");
inlineImage.setFileName(fds.getName());
content.addBodyPart(inlineImage);
추가 할 수 있습니다. 그러나 상대 경로를 제공하면 작동하지 않습니다.
내 폴더 구조
C:\workspace\service-1.0\src\main\resources\images\header.png
C:\workspace\service-1.0\src\main\resources\attachements\test-attachment-1.txt
은 내가
접근없이 성공과 함께 다음과 같은 시도 1
ServletContext context;
String path = context.getRealPath("/resources/images")+"/header.png";
그것은 다음과 같은 폴더에있는 이미지 만 이미지를 찾고 있습니다 해당 폴더에서 사용할 수 없습니다.
C : \ 사용자 \ 사용자 이름 \의 AppData \ 로컬 \ 온도 \ 바람둥이-Docbase에 .. \ 리소스 \ 이미지/header.png
접근법 2
basePath = this.getClass().getClassLoader().getResource("/images/").getPath();
C : \ workspace \ service-1.0 \ src \ main \ resources \ images \ header.png
/C:/workspace/service-1.0/build/libs/service-1.0.jar!/BOOT-INF/classes!/images/,(단 일식에서 작동하지만 명령 프롬프트 자바에서 -jar 구축 \ lib 디렉토리 \ myapp.jar)
접근 3
ClassPathResource file = new ClassPathResource("header.png");
String mypath = file.getFile().getAbsolutePath();
(이것은 또한 작동하지 않았다)
하는 경우 자원 아래 이미지 폴더에 이미지를 놓습니다. 다음 URL을 통해 이미지를 볼 수 있습니다.
http://localhost:7075/myservice/v1/images/header.png
리소스 폴더에서 이미지를로드하는 것이 좋습니까? 스프링 부트 항아리가 런타임에 폭발 할 것인가? 스프링 부트 jar 파일에서 이미지를로드하는 올바른 방법은 무엇입니까?
감사합니다. @Ralf Stuckert. 그것은 완벽하게 작동했습니다. – user3909315
듣기 좋습니다 :-) 정답으로 표시하면 매우 친절합니다. –
방금 정답으로 대답을 표시했습니다. 다시 한번 감사드립니다. – user3909315