我们的系统有许多机器协同工作。在某些时候,他们需要创建一个图像并将其上传到媒体服务器。此媒体服务器只是一个提供静态文件的Web服务器。我们不想显示每个图像的增量ID,因此我们需要模糊图像名称。
由于每台计算机都有唯一的用户,我们只跟踪生成的网址,因此我们决定使用HMAC-SHA256(secret, user_id)
为每张图片生成文件名。
这会产生具有此类名称的图像:b3dbaea7adef41e8ecbeaa0cd8ec02d57f0334a6e003271d5e334ae2e46b4285.jpg
目前不是最美丽的解决方案,但确实有效。
由于现在某些业务发生变化,我们需要更频繁地生成此图像,我们需要为每个用户创建文件夹。
如何保持唯一文件路径而不会如此大,同时避免图像名称之间或用户文件夹之间的冲突
我想避免这种路径:b3dbaea7adef41e8ecbeaa0cd8ec02d57f0334a6e003271d5e334ae2e46b4285/b3dbaea7adef41e8ecbeaa0cd8ec02d57f0334a6e003271d5e334ae2e46b4285.jpg
答案 0 :(得分:0)
与SHA256相反,MD5将生成大约一半的字符串;如果你用它同时用于目录&文件名,只要你当前的实现,你就有了路径。
另一个想法:使用的字符空间比文件和目录名称允许的要小得多(16个字符)(36或62,取决于你是否允许这两种情况,并且这是坚持使用字母数字),所以你可以将哈希映射到较小的字符串而不会增加碰撞的可能性。