我使用icefaces, ace:fileEntry
组件从客户端上传文件,这些文件保存在file system
中,同时我的managedBean
标记为sessionScope
,这很有意义当用户注销然后重新登录时,他/她将不会看到他们上传的文件。
我想做两件事:
我的方法:
我正在考虑使用文件ID,用户ID和文件在数据库中创建新表,所以当使用ace fileEntry
组件从客户端上传文件然后通过我的Hibernate时,我会保存文件和用户相关的信息。从会话到数据库,现在当用户注销并重新登录时,我使用userId查询数据库表以获取他或她的所有文件。
有关实施此功能的任何想法或更好的建议吗?
答案 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();
// ...
这样您就不需要另一个数据库表,用户将始终只能看到自己的文件。