2017-07-17 18 views
-1

Servletにファイルをアップロードし、このファイルに対して必要な操作を行い、この処理したファイルをクライアントにダウンロードします。複数のユーザーが同じファイルにアクセスするのを防ぐ方法

私は2つのフォームmultipart/form-dataを持っています。最初のメソッドはpostメソッドを使用してファイルをアップロードします。 2番目はgetメソッドを使用してファイルをダウンロードしています。

DoPost() - >ユーザーがファイルを選択してアップロードします。このファイルは処理され、指定された場所に格納されます。このファイルは、タイプFileのグローバル変数として保持されます。

DoGet() - >グローバルFileをダウンロードしています。

ユーザーがWebブラウザからファイルをアップロードすると、別のユーザーが別のWebブラウザからファイルをダウンロードできます。 これは、Fileがグローバルである理由と考えられます。私はThreadLocalを試しましたが、doPostdoGetは同じスレッドに含まれていないため動作しませんでした。

提案できる方法はありますか?

+0

明確にするために、ファイルをアップローダだけが利用できるようにしたいと思いますか? – MartinByers

+0

はい、アップローダーのみです。 – cezaalp

+0

あなたの質問は、複数のスレッドについてではありません。それは複数のユーザーのことです* – EJP

答えて

0

ユーザーが同じセッションでファイルをアップロードしてダウンロードする場合は、POST操作中にファイル名をHttpSessionに保存できます。 GET中に、HttpSession内の存在をチェックします。 HttpSessionに存在する場合にのみ、ユーザーにファイルをダウンロードさせます。

ユーザーがファイルをアップロードしてからログアウトして再度ログインしてファイルをダウンロードできる場合は、データベースなどの一部の永続ストレージにファイル情報を保存する必要があります。

0

それぞれの要求は異なるスレッドですが、同じセッションにリンクする必要があります。セッション内でファイルを保存し、すべてがソートされます。

関連する問題