昨日は写真をアップロードしてリンクを返す機能を実装していました。プロジェクトが Tomcat に再デプロイされると、以前にアップロードされた画像やその他のリソースの一部が自動的に削除されました。 理由は、画像をターゲット ディレクトリに保存したためです。その下に置くだけで、Web リンクを通じて簡単に画像を取得できるためです。 ただし、プロジェクトが再デプロイされると、ターゲットが再構築され、ターゲット内のリソースは削除されます。 最終的に、同じイメージを 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML フォームを送信するいくつかの方法_PowerNode Java Academy
>>: Vue は Websocket カスタマー サービス チャット機能を実装します
この記事の例では、タイプライター効果を実現するためのjsの具体的なコードを参考までに共有しています。...
序文クエリ情報が複数のテーブルから取得される場合、クエリのためにこれらのテーブルを結合する必要があり...
1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...
CI を利用してリリース用の Docker イメージをビルドすることで、全員のバージョンリリース効率...
目次1. コンテナライフサイクル管理(1)ドッカー実行(2)スタート/ストップ/リスタート(3)ドッ...
1. 背景最近、独立した開発者がUIデザインを行うのを支援するために、uideaというWebサイト...
弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...
一般的に ELK スタックとして知られる Elastic スタックは、Elasticsearch、L...
序文多くの Web アプリケーションは、リレーショナル データベース管理システム (RDBMS) に...
始める前にクラウドサーバーを持っています。私のはTencent Cloud Server (Cent...
秘密鍵を開かずにリモート サーバーのデータベースに接続するのは非常に便利です。新しい接続でデータを入...
MySQL proxies_priv(シミュレートされたロール)を使用して同様のユーザーグループ管理...
以前は、フロートはレイアウトによく使用されていましたが、フローティングレイアウトを使用すると親要素の...
目次1. 永続データの簡単なマウント2. DockerFileでイメージをビルドし、設定ファイルを指...
問題の説明:たとえば、ファイル 11 の内容は次のとおりです。こんにちはファイル22の内容は次のとお...