saithink / saiadmin

SaiAdmin框架后端
https://saithink.top
MIT License
92 stars 13 forks source link

saiadmin 上传文件的过程中hash值检测过程中的逻辑处理问题 #2

Closed 567ai closed 2 months ago

567ai commented 3 months ago

image 这段代码 本意是查看 上传的文件是否存在 如果存在 将不在建立表的信息 直接返回通过hash值返回的内容

但是现实情况却不符 首先说下 数据表的hash索引 这个应该关掉 原因 附件删除后 还没有被销毁 是可以被恢复的 但是 却无法在此上传 因为hash在数据表中已经存在 所以 必须关掉 这样才更符合 实际的业务情况

以下问题是hash索引关闭的情况下 问题1 因为本地保存 默认用了日期的路径 不同的2天 上传了相同的文件 却都得到了保存 因为 判断hash值 在保存文件之后 所以 不论 是否判断 hash 文件都已经保存了 还有就是第二天上传的相同文件 在第二次上传的时候 却检测到第一天返回了第一天的上传文件的数据 是不对的 最少应该也是第二天的

问题2 就是 当2次上传 文件名不一样 但是文件一样的情况下 由于hash检测的问题 返回的确是最新上传的文件 这个是不对的 例如上传2个配置文件文件内容是相同的.env 和.env.prod 因为文件相同 所以hash值相同 但这确实是2个文件 在列表显示的时候代表不同意思 可以文件是一个 但是创建数据的时候应该是2个

问题3 就是文件后缀不同 相同的文件 后缀不同也会发生 上述问题

问题4 就是查询到相同的hash值直接返回 这个 应该添加更多的条件不能只以hash值 为标准 例如 相同的文件 但是名字后缀不同 都会返回错误的值

问题5 就是路径问题 我在考虑要不要日期路径 以及日期路径的必要性

saithink commented 3 months ago

简单讨论一下: 1、hash判断只是为了尽量减少一部分服务器开销,并不能完全限制相同文件的上传; 2、关于文件判断之前,已经上传的问题,可以在判断hash重复后,增加一个删除刚刚上传文件的功能

567ai commented 3 months ago

2、关于文件判断之前,已经上传的问题,可以在判断hash重复后,增加一个删除刚刚上传文件的功能 文件是先上传后判断的 不论hash是否重复 文件都已经上传了 hash相同的情况 只是覆盖了而已

saithink commented 2 months ago

所以说判断重复后,删除刚才上传的文件呀。一般的项目都是不管重复的,因为这个文件重复没法处理