0

icefaces, ace:fileEntryクライアントからファイルをアップロードするためのコンポーネントを使用していて、それらのファイルは保存されていますfile system。また、managedBeanとしてマークを付けてsessionScopeいます。ユーザーがログアウトしてから再度ログインすると、アップロードされたファイルは表示されません。

私は2つのことをしたい:

  1. ユーザーがファイルをアップロードするときに、そのファイルをユーザーIDまたはユーザーセッション情報とともにデータベースに保存したいと思います。
  2. ユーザーがログアウトして再度ログインすると、アップロードされたファイルを表示できるはずです。現在、ユーザーがログアウトした後、ファイルは保存されませんか?
  3. ユーザーは自分のアップロードしたファイルのみを表示でき、ランダムなファイルは表示できません。

私のアプローチ:

私はファイルID、ユーザーID、ファイルを使用してデータベースに新しいテーブルを作成することを考えています。そのため、ace fileEntryコンポーネントを使用してクライアントからファイルをアップロードし、Hibernateを介してファイルをアップロードするときに、セッションからデータベースに取得したファイルとユーザー関連の情報を保存します。ユーザーがログアウトして再度ログインすると、userIdを使用してデータベーステーブルにクエリを実行し、すべてのファイルを取得します。

この機能を実装するための考えやより良い提案はありますか?

4

1 に答える 1

2

ユーザーIDに基づいて、ユーザーごとに個別のサブフォルダーを作成します。

/var/webapp/uploads/[userid]

必要に応じて、を使用File#mkdir()してサブフォルダーを作成できます。

File uploads = new File("/var/webapp/uploads");
File userUploads = new File(uploads, String.valueOf(user.getId()));
userUploads.mkdir();
// ...

その後、アップロードされたすべてのファイルを取得するには、

File[] allUserUploads = userUploads.listFiles();
// ...

このように、別のDBテーブルは必要なく、ユーザーには常に自分のファイルのみが表示されます。

于 2012-05-02T20:31:07.460 に答える