请问:文件hash一致,怎么修改相同hash不同文件名进行【重命名】
来源:5-6 编码实战:实现秒传功能接口+小结

慕仰9495179
2020-07-31
我想问的是,秒传这个功能,上传之后两个文件的hash是一致的,命名不同。那这时候更改两中个其中一个的文件名,数据库怎么去根据你选择的是哪个文件去修改文件名?hash又是一致的。怎么处理这个问题?
写回答
1回答
-
同学你好,这里可以分两种情况来处理:
(1)不同用户之间:用户A上传了文件a, 用户B后面再上传文件a时会触发秒传。由于不同用户之间,是通过t_user_file文件表来做隔离的,因此这里会有两条独立的记录,分别属于用户A和B,各自的文件重命名操作不受影响;底层通过t_file文件表来做共享同一个文件。
(2)同一个用户:用户A先上传了文件(hash为a,文件名为b),如果后续再要上传一个文件(hash为a,文件名为c),应该怎么处理?可以基于相同的逻辑(判断hash)来做秒传,但是对于同一个用户多个相同hash文件记录的场景,就要重新考虑一下。如果要支持这种操作,同一个文件多个不同文件名的记录,那么一般要加多一个字段和hash作为组合键来唯一标识一个文件(当前课程暂不支持同一个用户可以上传多个相同的hash文件)。比如加多一个目录的概念,(文件目录+文件名)计算出一个hash值,假设这个hash值叫fileID, 那么(fileID,hash)就可以作为文件的唯一标识。要重命名某个文件,那么就可以根据(userID, fileID, hash)来唯一确定那个文件了。
012020-08-03
相似问题