我有一个允许用户上传图片的网络应用程序。我将图像存储在S3存储桶中,并为它们提供基本上是MD5(session_id + unix_timestamp)结果的所有文件名。这种创建独特图像文件名的方法有什么缺陷吗?
答案 0 :(得分:6)
我会考虑以某种文件夹格式存储文件,因为如果一个文件夹中没有200,000个文件,许多基于UI的S3客户端将更好地工作。另外,为上传的文件添加正确的扩展名和mime类型也没有什么坏处。这样 - 如果你决定直接从S3到网页等提供服务 - 他们就可以开始了。
二分之二千〇一十二/ 6gtbb88uytgfrses4.png
您也可以将尺寸放在名称中......
二分之二千〇一十二/ 6gtbb88uytgfrses4_600x800_.png
答案 1 :(得分:4)
从独特的角度来看,你应该是安全的。使用MD5时不太可能发生碰撞(尽管可能)。
但是,如果您想为用户提供此文件的下载,我假设您将原始文件名存储在别处(数据库或类似)。是对的吗?如果这是正确的,您可以将会话ID和时间戳存储在同一个地方,然后继续使用文件名的GUID(而不是将它们提供给您的MD5哈希函数),这样可以更安全地发生冲突观点出发