请问:文件hash一致,怎么修改相同hash不同文件名进行【重命名】

来源:5-6 编码实战:实现秒传功能接口+小结

慕仰9495179

2020-07-31

我想问的是,秒传这个功能,上传之后两个文件的hash是一致的,命名不同。那这时候更改两中个其中一个的文件名,数据库怎么去根据你选择的是哪个文件去修改文件名?hash又是一致的。怎么处理这个问题?

写回答

1回答

xiaomo

2020-08-01

同学你好,这里可以分两种情况来处理:

(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)来唯一确定那个文件了。

0
1
慕仰9495179
非常感谢!受益匪浅
2020-08-03
共1条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程