1

ユーザーが自分の写真をアップロードできるプロジェクトを作成しています。この写真は「images/uploads/filename」フォルダに保存されています。彼のプロフィールを作成し、写真を表示するときに、 「images/uploads/filename」として<img>タグを付けsrcますが、写真が表示されません。写真を隣接するフォルダー「images/abc/filename」に手動でコピーし、それをソースとして使用すると機能します。

これはどのように発生し、どうすれば解決できますか? 写真のアップロードとダウンロードに同じフォルダーを使用する必要があります。

4

2 に答える 2

2

これは、Web アプリケーションを IDE プロジェクトとして実行していて、アップロードされた画像を IDE のプロジェクト スペースに保存している場合に発生する可能性があります。(サーブレット コードなどによって) 外部で実行される IDE のプロジェクト フォルダーの変更は、デプロイされたサーバーの作業フォルダーにすぐには反映されません。タッチしたとき (プロジェクトを更新することによって) またはコピーしたとき (たまたま見つけたように) のみ、反映されます。

結局、アップロードされたファイルを webapp の deploy フォルダーに保存するのは良くない考えです。これらのファイルは、元の WAR ファイルに含まれていないため、Web アプリケーションを再デプロイするたびにすべて失われます。

のような別の固定パス上の webapp の deploy フォルダーの外のどこかにそれらを保存する必要があります/var/webapp/uploads。相対パスを使用したり、その周りにオブジェクトgetRealPath()を作成したりしないでください。File固定パスを使用するだけです。固定パスは、コンテキスト パラメータ設定、VM 引数、プロパティ ファイル設定、または JNDI エントリとしていつでも設定可能にすることができます。

次に、それをワールド ワイド ウェブに提供するには、そのパスを別の docroot としてサーバー構成に追加するだけです。どのサーバーを使用しているかは不明ですが、Tomcat<Context>ではserver.xml.

以下も参照してください。

于 2012-05-04T04:13:30.853 に答える
0

パスが正しいことを確認し、画像拡張子を含めてください

テストのためだけに、imgタグをindex.php内に配置します

<img src="images/abc/filename.jpg">

/root/index.php

次に、画像をabc/フォルダーに配置します

/root/images/abc/filename.jpg

これで画像が表示されます。


以下のようにルートの別のフォルダ内にimgタグがある場合

/root/user/index.php

これで、imgタグを使用するときに、このパス(相対リンク)を使用します。

<img src="../images/abc/filename.jpg">

画像パス「../」の先頭に注意してください。これは、ルートに戻るために使用されます。


imgタグを保持しているphpまたはhtmlファイルがさらに深い場合は、すべてのレベルに../を追加することを忘れないでください。2つのフォルダーの深さは次のようになります。

<img src="../../images/abc/filename.jpg">


質問はかなり曖昧だったので、これがあなたが探しているものであることを願っています。

私に知らせてください、そしてこれが間違っているなら、もう少し説明してください、そして私は助けようとします:)

于 2012-05-03T18:48:28.563 に答える