0

我正在使用icefaces, ace:fileEntry组件从客户端上传文件并且这些文件被保存在file system,我也将我managedBean标记为sessionScope并且当用户注销然后重新登录时,他/她将看不到他们上传的文件是有道理的。

我想做两件事:

  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();
// ...

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

于 2012-05-02T20:31:07.460 回答