JSF:如何保存文件,以便当用户再次登录时,他可以看到上传的文件?

时间:2012-05-02 20:16:45

标签: java jsf architecture file-upload

我使用icefaces, ace:fileEntry组件从客户端上传文件,这些文件保存在file system中,同时我的managedBean标记为sessionScope,这很有意义当用户注销然后重新登录时,他/她将不会看到他们上传的文件。

我想做两件事:

  1. 当用户上传文件时,我想将该文件与用户ID或用户会话信息一起保存到数据库。
  2. 当用户退出并重新登录时,他/她应该能够看到他/她上传的文件,当前用户退出后文件没有保存?
  3. 用户只能看到他或她上传的文件,而不能看到任何随机文件。
  4. 我的方法:

    我正在考虑使用文件ID,用户ID和文件在数据库中创建新表,所以当使用ace fileEntry组件从客户端上传文件然后通过我的Hibernate时,我会保存文件和用户相关的信息。从会话到数据库,现在当用户注销并重新登录时,我使用userId查询数据库表以获取他或她的所有文件。

    有关实施此功能的任何想法或更好的建议吗?

1 个答案:

答案 0 :(得分: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();
// ...

这样您就不需要另一个数据库表,用户将始终只能看到自己的文件。