为用户上传的图像创建唯一的文件名(哈希)

时间:2012-02-13 20:07:14

标签: web-applications amazon-s3 filenames

我有一个允许用户上传图片的网络应用程序。我将图像存储在S3存储桶中,并为它们提供基本上是MD5(session_id + unix_timestamp)结果的所有文件名。这种创建独特图像文件名的方法有什么缺陷吗?

2 个答案:

答案 0 :(得分:6)

我会考虑以某种文件夹格式存储文件,因为如果一个文件夹中没有200,000个文件,许多基于UI的S3客户端将更好地工作。另外,为上传的文件添加正确的扩展名和mime类型也没有什么坏处。这样 - 如果你决定直接从S3到网页等提供服务 - 他们就可以开始了。

二分之二千〇一十二/ 6gtbb88uytgfrses4.png

您也可以将尺寸放在名称中......

二分之二千〇一十二/ 6gtbb88uytgfrses4_600x800_.png

答案 1 :(得分:4)

从独特的角度来看,你应该是安全的。使用MD5时不太可能发生碰撞(尽管可能)。

但是,如果您想为用户提供此文件的下载,我假设您将原始文件名存储在别处(数据库或类似)。是对的吗?如果这是正确的,您可以将会话ID和时间戳存储在同一个地方,然后继续使用文件名的GUID(而不是将它们提供给您的MD5哈希函数),这样可以更安全地发生冲突观点出发