画像を埋め込むと、スプリングブートリソースフォルダからファイルを添付することができません画像を埋め込むとスプリングブートリソースフォルダからファイルを添付する方法
私は春ブーツ(Jarファイルではなく、WARファイルを使用してRESTfulなWebサービスを作成しました)。一部のサービスは電子メールを送信し、一部は添付ファイル付きの電子メールを送信します(動的に作成されます)。 Webパーツ(Angular)は、別のサーバーにデプロイされているApacheサーバーにあります。
私はFreemarkerテンプレートを使用して電子メールを作成し、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:\ Users \ユーザー名\のAppData \ローカル\一時\ tomcatに、文書ベース.. \リソース\画像/ 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/ (のみ日食の作品ではなく、コマンドプロンプトからjavaの-jar構築\ libに\ myapp.jar)
アプローチ3
ClassPathResource file = new ClassPathResource("header.png");
String mypath = file.getFile().getAbsolutePath();
(これもうまくいきませんでした)
の場合リソースの下のimagesフォルダにイメージを置きます。次のURLから画像を見ることができます。
http://localhost:7075/myservice/v1/images/header.png
リソースフォルダからイメージをロードするのはいいですか?実行時に春のブートジャーが爆発するか?スプリングブートjarファイルから画像をロードする正しい方法は何ですか?
@Ralf Stuckertありがとうございます。それは完璧に働いた。 – user3909315
それは聞いて良いです:-)それは正しい答えとしてマークすると、非常に親切です。 –
私はちょうど答えを正解とマークしました。もう一度ありがとうございます。 – user3909315