Tomcat を再デプロイした後にイメージやその他のリソースが自動的に削除される問題を解決します

Tomcat を再デプロイした後にイメージやその他のリソースが自動的に削除される問題を解決します

昨日は写真をアップロードしてリンクを返す機能を実装していました。プロジェクトが Tomcat に再デプロイされると、以前にアップロードされた画像やその他のリソースの一部が自動的に削除されました。

理由は、画像をターゲット ディレクトリに保存したためです。その下に置くだけで、Web リンクを通じて簡単に画像を取得できるためです。
たとえば、アップロード後、次のパスが返されます: http://localhost:8080/upload/images/timg.jpg

ただし、プロジェクトが再デプロイされると、ターゲットが再構築され、ターゲット内のリソースは削除されます。
(ターゲットは、プロジェクトのビルド後にファイルとディレクトリ、jar パッケージ、war パッケージ、およびコンパイルされたクラス ファイルを保存するために使用されます。)

最終的に、同じイメージを 2 つのパスに保存する方法を考えました。1 つのパスはターゲットの下にあり、もう 1 つのパスは開発したプロジェクトの下にあります。このようにすると、再デプロイすると、自分のプロジェクト内のファイルがターゲット ファイルを上書きし、ターゲットに再ロードされます。

以下は私の実装コードです

// ローカル IDEA プロジェクト内のパスへ String localDirString = "E:/zideapro/onlineschool/src/main/webapp/upload/images";
//Tomcat サーバーにデプロイされたプロジェクト パス String root_String = request.getSession().getServletContext().getRealPath("/upload/images");

ファイル localDirPath = new File(localDirString);
ファイル root_Path = new File(root_String);
// ローカル IDEA にディレクトリが存在しない場合は、作成する必要があります if (!localDirPath.exists()) {
  ローカルディレクトリパス。
}
// サーバーTomcatにディレクトリが存在しない場合は作成します。if (!root_Path.exists()) {
  root_Path.mkdirs();
}
//ローカル ファイル パスFile localFilePath = new File(localDirPath + File.separator + attachment.getOriginalFilename());//ファイル ディレクトリ + ファイル名//サーバー内のファイルのパスFile root_FilePath = new File(root_Path + File.separator + attachment.getOriginalFilename());//プロジェクト デプロイメント ディレクトリ + ファイル名//イメージをローカルに保存attach.transferTo(localFilePath);
// ローカル パスから Tomcat サーバーにファイルをコピーします // 再デプロイメント中にイメージ リソースが失われないようにします Files.copy(localFilePath.toPath(), root_FilePath.toPath());

System.out.println("editormd は画像をローカル ストレージ パスにアップロードします: " + localFilePath);
System.out.println("editormd はイメージをデプロイメント プロジェクト パスにアップロードします: " + root_FilePath);

出力セクション:
editormd がローカルに保存するために写真をアップロードするパスは次のとおりです: E:\zideapro\onlineschool\src\main\webapp\upload\images\timg2.jpg
editormd がデプロイメント プロジェクトにイメージをアップロードするパス: E:\zideapro\onlineschool\target\ssm\upload\images\timg2.jpg

このように、画像リソースは 2 つのパスにアップロードされます。プロジェクトを再デプロイすると、失われたファイルがローカル ファイルで上書きされるため、画像などのリソースが失われることはありません。

Tomcat の再デプロイ後に画像やその他のリソースが自動的に削除される問題を解決する方法についての記事はこれで終わりです。Tomcat の再デプロイとリソースが自動的に削除される詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Maven プロジェクトを war パッケージにパッケージ化して Tomcat にデプロイする方法
  • IDEA で JavaWeb プロジェクトを Tomcat サーバーにデプロイする方法
  • Vue プロジェクトの webpack をパッケージ化して Tomcat にデプロイし、更新すると発生する 404 エラーの問題の解決策
  • Webプロジェクトがwarパッケージにパッケージ化され、Tomcatがデプロイされると、startup.batが実行され、デプロイメントが直接失敗します。簡単な解決策
  • Spring Boot プロジェクトを Tomcat コンテナにデプロイする方法
  • jsp-ファイルのアップロード後にTomcatを再起動すると自動的にファイルが削除される問題を解決します

<<:  HTML フォームを送信するいくつかの方法_PowerNode Java Academy

>>:  Vue は Websocket カスタマー サービス チャット機能を実装します

推薦する

効率的な視覚化Nginxログ表示ツール

目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...

ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります

最近、私はデザインには階層感覚が必要だと言っています。この階層感覚には、色の重ね合わせや要素の重ね合...

MySQL 8の新機能ウィンドウ関数の役割

MySQL 8.0 の新機能は次のとおりです。 Unicode 9.0 をすぐに完全にサポートウィン...

LinuxソースコードからTIME_WAITの期間を分析する

目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...

MySQL の遅いクエリの落とし穴

目次1. 遅いクエリ構成1-1. スロークエリを有効にする2. 遅いクエリSQLの分析を説明する3....

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

MySql 5.7.20 のインストールとデータおよび my.ini ファイルの構成

1. まずMySqlの公式サイトからダウンロードします参考: https://www.jb51.ne...

Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

1つ。 tomcat を使用したリモート展開1.1 発生した問題:プロジェクトでは、サードパーティの...

Vue3+Element+Tsは、フォームの基本的な検索リセットやその他の機能を実装します

Vue2 の記述スタイルから Vue3 の形式に切り替えると、記述スタイルとコード構造にいくつかの変...

HTML ページの部分更新の実装コード

イベント応答の更新: 要求されたときのみ更新1. JS HTML DOM または jQuery を介...

MYSQLクエリデータの結果に自動的に番号を付ける方法

序文実際、クエリ中に結果に番号が付けられるこのような状況に遭遇したことは一度もありません。同僚が転職...

CSSは親要素の下の最初の子要素を選択します(:first-child)

序文最近、プロジェクトで :first-child を使用したのですが、すぐに思いつきました。これは...

複合主キーと複数列インデックスに遭遇した場合の MySQL 行ロックの詳細な説明

背景今日、他のプロジェクト チームと協力してシス​​テムのストレス テストを実施しているときに、プロ...

MySQLの結合の基本原理についての簡単な説明

目次結合アルゴリズム駆動テーブルと非駆動テーブルの違い1. 単純なネストループ結合、単純なネスト、イ...

Mysql InnoDBとMyISAMの違いの分析

MySQL は、myisam、innodb、memory、archive、example など、多く...