暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

文件管理的文件存储目录设计

看代码 2020-02-10
1348

文件管理摘要:

1、统一存放在指定大目录下,以便后续的备份和搬迁

2、文件不建议全部集中在一个目录下,建议按属性和时间做多级分类

3、文件按来源,分成:上传文件、导入文件、系统输出的永久文件、系统输出的临时文件

4、文件按时限,分成:永久文件,定期文件(及临时文件)

5、文件按保密性,分成:保密文件,公开文件

6、文件校验,对文件做hash,定时hash校对

 

一、统一存放在指定大目录下,以便后续的备份和搬迁

个人遇到过,系统多人开发,没有统一的规范,文件随意多处存储。

然后系统占用的磁盘空间不断加大。后面哪天应对各种需求,需要搬迁系统的时候,发现系统几十到上百G的空间占用,而又无法有效的筛选文件,给搬迁工作造成极大的困难。

所以,个人系统的设计思路,文件统一放在根目录下的WebFiles目录下。系统搬迁的时候,先过滤WebFiles,把其他的先搬迁了。

二、文件不建议全部集中在一个目录下,建议按属性和时间做多级分类

个人不建议把所有文件都放在一个目录下,这样的话,后续系统读取该目录下面的文件的时候,会因为目录下的文件过多,读取速度变慢,慢慢成为系统的瓶颈。 

个人设计的目录存放:WebFiles/UpForeverSaves/PmDocItem/2020/1/guid/xxx.xx

1、WebFiles:统一根目录

2、UpForeverSaves:放永久存放的文件;其他:OutForeverSaves:系统输出的永久文件;OutTimeSaves:系统输出的临时文件(指定时间删除);UpTimeTmps:用户上传的临时文件等等。

3、PmDocItem:对应的业务名

4、2020:年份

5、1:月份

6、Guid:(可选)一个GUID编码(或随机码),保证文件唯一性和不容易被路径猜出和下载

7、文件名

三、文件按来源和时限,分成:上传文件、导入文件、系统输出的永久文件、系统输出的临时文件

序号名称 目录名 说明
1永久上传文件UpForeverSaves

1、用户上传的文件

2、永久保存

2定期上传文件UpTimeSaves

1、用户上传的文件

2、保存一段时间

3、如:合约的电子签名,当合约过期一段时间后就可以删除

3
永久输出文件OutForeverSaves

1、系统输出的

2、永久保存的

3、如:2019年1月的财务报表

4
定期输出文件OutTimeSaves

1、系统输出的

2、保存一段时间的

3、如:2019年户外拓展安排表

5上传临时文件UpTimeTmps

1、上传文件

2、临时的

3、系统读写操作完毕后建议系统自动删除的文件

4、如:导入车辆信息

四、文件按保密性,分成:保密文件,公开文件

1、目前设计没有考虑到怎么防止盗链下载,期望有技术大神给指导建议

2、目前设计考虑是通过一个随机的码或Guid实现目录的不可规律

3、在.net中可以考虑用Server.Transfer或Server.Execute做跳转,隐藏真实的下载路径

4、在.net中可以配置指定目录是否需要有Session认证才能访问,但这个是web.config的配置,有些文件是要求公开的,所以不一定能满足需求。

综述:目前设计,仅考虑用Guid+Server.Transfer实现防止盗链

五、文件校验,对文件做hash,定时hash校对

就是对文件的大小和整个文件做hash(代码没有,还没写出来),存入数据库中。然后不定时扫库和对文件做校验,反正相关的机密文件被篡改都不知道。



文章转载自看代码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论