日期:2014-05-18  浏览次数:20615 次

求一关于磁盘配额解决方案
求一解决方案:对注册用户实施磁盘配额(如:电子相册之类,限定上传100M),想请教一下做过此类功能的兄弟,如何实现比较好?

想法一:给每个用户生成一个目录,在上传文件获取此目录的大小与上传文件大小之和,决定是否允许上传。考虑到此中做法是不是生成的文件夹过多,造成效率低下?

想法二:不给用户生成对应的目录,文件放入指定的目录,让后根据数据库存放的文件路径来构造File对象,获取每个文件的大小,在求和,进行比较决定是否允许上传。考虑此做法结构比较混杂,效率应该是比较低?

有做过此类功能的兄弟,多给点建议!!

------解决方案--------------------
楼主说的第二种方法比较可取。
大体就是,文件放入指定的目录,根据数据库存放的文件路径来构造File对象。
主要是通过信息字段,可以产生用户的目录层次关系。
同时,用户已经使用的体积也可以作为一个字段存储。这样,每次上传前只需要取一下该字段就可以判断是否允许上传了,上传之后改写一下新的使用体积就行了。
因为用户使用体积不仅是上传时需要用到进行判断,在用户登录后,也应该作为一个提示信息来显示,所以不应该每次都去检索用户的所有文件体积再求和,效率会比较低。
------解决方案--------------------
个人认为用第一种方法何尝不比第二种方法好,结构清晰,管理简单
你给用户分配空间是要用户去申请和激活才能用的,就比如QQ上的一样,不开通不激活那么这个文件夹就不存在的,
如果很多用户申请的话,那可以把用户分类(比如时间,用年分类,把今年申请开通的用户文件夹放在一个目录下)
第二种方法其实也一样,你把所有用户上传的东西都放在一起也多得不得了比用户文件夹要多得多吧
------解决方案--------------------
其实无所谓拉

只要给每个用户搞一个映射表

映射表主要记录虚拟的目录和实际的目录 以及文件大小等等

之后具体的磁盘管理就随便怎么来了。