2

私はJavaとJSFGlassfish3コンテナを使用しています。私のWebアプリケーションでは、ファイル(画像)管理システムを実装しようとしています。

アップロードした画像を保存するパスを読み取ったconfig.propertiesファイルがあります。

save.file.path.event = D:\\upload

ファイルのアップロードは機能し、すべてのファイルがその場所にありますが、画像を一覧表示しようとすると、ブラウザに画像が見つからないと表示されます。

<img src = "D:/upload/img1.png" />

Webサーバーはまったく異なるパーティションにあります。

画像が見つからないという問題に加えて、この分野のグッドプラクティスに関して次の質問があります。Webサーバーにアプリケーションを公開する時期になるとしたら、次のようなパスを使用するのはどれほど安全/正しいD:\\uploadですか。私の頭に浮かぶいくつかの問題は、オペレーティングシステム間の違いやパーティション名の不確実性です。

4

2 に答える 2

2

ローカルパスで画像を参照しようとしています。Webブラウザ(クライアントマシン上)がそのimgタグを解釈しているため、サーバーのファイルシステムではなく、独自のファイルシステム上のその場所を参照することに注意してください。サーバーが画像を提供しているWebアドレスへのリンクポイントを作成する必要があります。たとえばhttp://server/upload/img1.png

于 2012-02-06T20:03:00.920 に答える
1

この問題を解決するには2つの方法があるようです

1.ファイルをアプリケーションに配置します

アプリケーション名がの場合、のMyApplicationようなパスを指定できMyApplication/uploads/ images、ファイルは実際のアプリケーション内に保存されます。この方法の欠点は、再デプロイまたはホットデプロイのたびにファイルが削除されることです。

2.Webコンテナ構成に絶対パスを配置します

Tomcatの場合は、次の場所に移動します。次../ Apache Tomcat x.x.xx/conf/server.xmlのように記述します。

<Context path="/web_uploads" docBase="C:/uploads/"/>

Glassfishの場合は、sun-web.xmlファイルに移動して次のように記述します。

<sun-web-app>
    <property name="alternatedocroot_1" value="from=/uploads/* dir=C:"/>
</sun-web-app>
于 2012-02-08T19:00:33.373 に答える