2012-05-02 5 views
0

私はクライアントからファイルをアップロードするのにicefaces, ace:fileEntryコンポーネントを使用していますが、これらのファイルはfile systemに保存されています。私はと表示しています。アップロードされたファイルJSF:ユーザーが再度ログインしたときにアップロードされたファイルを見ることができるようにファイルを保存する方法は?

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

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

私のアプローチ:私は、ファイルID、ユーザIDとファイルとファイルが私の休止を経て、その後ace fileEntryコンポーネントを使用してクライアントからアップロードされますときに、私は、ファイルを保存しますと、データベースに新しいテーブルを作成することを考えています

私がセッションからデータベースに取得するユーザー関連の情報は、ユーザーがログアウトしてログインするときにuserIdを使用してデータベーステーブルにクエリを作成し、すべてのファイルを取得します。

この機能を実装するためのご意見やご提案はありますか?

答えて

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テーブルを必要としないと、ユーザーは常にだけ自分のファイルが表示されます。この方法を行う、その後すべてアップロードされたファイルを取得します。

+0

私は100人のユーザーを持っているので、各ユーザーごとに1つのフォルダを作成することでオーバーヘッドが大きくなりませんか? – Rachel

+0

オーバーヘッドは絶対にDBテーブルを使用するだけではありません:) – BalusC

+0

ユーザIDと一致するサブフォルダを開くだけですか?私の答えのポイントを理解していませんでしたか? – BalusC

関連する問題