我正在写一个"文件共享托管",我想在上传到一个唯一的名称时重命名所有文件,并以某种方式跟踪数据库上的名称.由于我不想要两个或多个具有相同名称的文件(这肯定是不可能的),我正在寻找一种基于密钥或其他东西为我生成随机名称的算法.
此外,我不想生成名称并搜索数据库以查看该文件是否已存在.我想确保我的应用程序之前从未创建过生成的文件名的100%或99%.
知道怎么写这样的应用程序吗?
您可以根据文件内容本身生成哈希.这有两个很好的理由:
让您永远保存同一个文件 - 例如,如果你有一个音乐文件,该文件内容一致的两个副本,你可以检查,看看是否已经存储的文件,并且只存储一次.
您从blob中分离元数据(文件名只是元数据).因此,您将拥有一个由文件内容的哈希索引的存储系统,然后将文件元数据与该哈希查找代码相关联.
根据散列的大小,找到两个计算相同散列的文件的风险确实相同,但是你可以通过将文件散列成块来有效地缓解(这可能导致一些有趣的存储优化方案:P).