0

私のウェブサイトで; ユーザーは自分の写真をアップロードできます。私は apache 、 hibernate 、 jpa で tomcat を使用しています。

/var/ImagesUploadedこれらの画像は、ubuntu ボックスのような場所に保管したいと考えています。/var/ImagesUploadedJava を使用すると、ディレクトリ内のこれらのファイルを参照できますjava.ioが、これらの画像を HTML ページでユーザーに表示するにはどうすればよいですか? HTML ファイルでは、次のようなタグが必要です<img src=''>。この src は webapp に関連しています。それで、ユーザーがアップロードした画像をWebアプリケーション内にのみ保持する必要があります! または、より良い解決策はありますか?

4

3 に答える 3

1

アプリケーションで画像を読み取り、それを base64 でエンコードされたストリームとしてユーザーに提供するのはどうですか? そうすれば、画像ディレクトリを Web に公開する必要がなくなり、ボットによるクロールを効果的に防ぐことができます。

  1. InputStreamjava.io を使用してアプリケーション内でファイルを読み取ります
  2. Apache Commons Codecを使用して Base64 に変換します。encodeBase64URLSafeString(IOUtils.toByteArray(yourImageAsInputStream);
  3. 応答 HTML に、画像を次のように埋め込みます。<img src="data:image/jpeg;base64,encodedString">

SOに関するこの投稿も役立つ場合があります。

于 2012-05-25T19:38:14.427 に答える
1

からファイルをサーバーに送信するように Web サーバーを構成するか/var/imagesUploaded(たとえば、 として/imguploads)、画像を読み取り、正しいヘッダーを付けてユーザーに出力するスクリプトを使用します。

于 2012-05-25T19:20:54.423 に答える
0

いくつかのオプションがあります:

  1. Tomcat 7 を使用している場合は、<Context> 要素で「エイリアス」機能を使用できます (http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Standard_Implementation)。

  2. 「/uploads/*」などの特別なパスに DefaultServlet をマップすることを試みることができますが、Tomcat の一部のバージョンには、「/」にマップされていない場合、基本的に適切に機能しない DefaultServlet があることに注意してください。

  3. 独自のサーブレットを作成して自分でビットを提供することもできますが、DefaultServlet の多くの機能を複製することになり、堅牢性のカテゴリで不十分になる可能性があります (たとえば、Range クエリの実装など)。

独自のサーブレットを作成する場合は、特定のリソースへの許可されたアクセスについてユーザーベースのチェックを実行するオプションがあることに注意してください。たとえば、Google からアップロード ディレクトリ全体にアクセスできるようにしたくない場合があります。

于 2012-05-25T19:45:28.313 に答える