0

Webアプリケーションの外部のローカルファイルシステムに保存されている画像を表示しようとしています。次の質問:JavaWebアプリケーションでアプリケーションサーバーの外部から静的データを提供する最も簡単な方法

編集: これらの画像がユーザーによってアップロードされるため、ファイルをWebアプリの外部に配置したいのですが、Webアプリ内に配置すると、Webアプリを再デプロイするときに画像が失われる可能性があります

しかし、ファイルはWebページに表示されていません。localhost:8080 / images / imageName.jpgからファイルを開こうとすると、リソースが利用できませんというエラーが表示されます。

server.xmlにコンテキストを追加しました(Servers-> Config-> server.xmlをトラバースします):

 ........
 <Context docBase="DMSystemV1.0" path="/DMSystemV1.0" reloadable="true" source="org.eclipse.jst.jee.server:DMSystemV1.0"/>
      <Context docBase="/Projects/SpringExample/Images" path="/images"/>
      </Host>

また、私のweb.xmlは次のようになります。

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
   </servlet-mapping>
   <servlet>
    <servlet-name>DMSystem</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>DMSystem</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

表示したい場所:<img src="/images/${imagePath}" alt="Item's image">

Mytomcatは次の場所にあります:F:\ Software \ Servers \ tomcat7 \ tomcat7画像フォルダは次の場所にあります:F:\ Projects \ SpringExample \ Images

イメージパスは、Tomcatフォルダーを基準にして作成されていますか?

また、アップロードパス(アップロードサーブレット内)とダウンロードパスをserver.xmlにハードコーディングしていますが、これらをconfignまたはセットアップ情報として提供する方法はありますか?

4

1 に答える 1

2

最も簡単な解決策は、画像をコピーしてWebアプリのルートに提供することです。ただし、このソリューションが何らかの理由で適切でない場合は、いつでもサーブレットを作成してイメージを「プロキシ」することができます。

サーブレットを作成し、パスにマップします。次に例を示します。

<servlet-mapping>
  <servlet-name>imageProxyServlet</servlet-name>
  <url-pattern>/imagesproxy/*</url-pattern>
</servlet-mapping>

次に、サーブレットクラスで、ファイルIOを実行して画像を読み取り、それを応答に書き込みます。適切なコンテンツタイプを設定することを忘れないでください。また、画像が大きい場合にメモリを消費しないように、バッファ付きの読み取り/書き込みを使用してください。

次に、画像をhttp://mydomain.com/myapp/imagesproxy/something.jpgとして提供できます。そのURLへのリクエストは、画像プロキシサーブレットにディスパッチされます

于 2012-12-14T04:49:27.153 に答える