如何命名用户上传图片?

时间:2011-09-17 23:07:51

标签: php mysql image

我想知道如何使用PHP& amp; MySQL,我应该使用自动增量编号作为图像的名称,例如1.gif或者我应该使用一些随机数字等。我认为自动增量更好。但什么是最好的?

5 个答案:

答案 0 :(得分:3)

由于还没有人正式提供此功能,我建议只将文件名存储为数据库唯一ID,仅此而已,并将扩展名存储在数据库中(除非您强制所有图像都是.jpg或其他内容) ,那么你不需要)。

  • 它始终是一个安全的文件名(整数)
  • 它永远是独一无二的
  • 无需将文件名存储在数据库中或担心擦除它。
  • 它会尽可能小。

为什么我不会按照其他人的建议使用用户的用户名/ ID:

  • 如果您不需要,没有任何好处,也没有理由在文件名中公开用户的ID。
  • 无需为允许的字符清理它,这可能最终会导致多个用户使用相同的“文件安全”用户名。
  • 用户名可能会改变,因此它并不总是有意义,如果您希望它们匹配,您不希望重命名文件。

为什么我不会以任何形式使用原始文件名:

  • 没有任何好处。
  • 您必须为允许的字符清理它。
  • 会有重复。

除非你对虚荣文件名感兴趣,否则我想不出任何理由不使用自动增量id。如果您的数据库ID是唯一的,那么您的文件名也是如此。

如果以后你想要“漂亮”的文件名,你可以使用.htaccess重写请求,和/或通过php脚本输出你的图像,这也有检查权限和诸如此类的东西的好处如果你需要它。

答案 1 :(得分:1)

怎么样?
md5(microtime()) 

这是非常独特的

答案 2 :(得分:0)

命名图像的一个好方法是将用户名附加到左边填充的自动增量值为零,例如“00000027MyPic.jpg”。

答案 3 :(得分:0)

我喜欢使用自动递增ID和文件名的组合。

因此,如果我上传图片my_photo.jpg并以id为5存储,我会将其保存为5_my_photo.jpg

这样,原始文件名和扩展名将被保留,如果我愿意,我可以将其发送给没有id前缀的用户。

答案 4 :(得分:-1)

如果您担心图片是唯一的,请将其存储为time().$extention

我也更喜欢将用户的用户名作为前缀,但这就是我,没有理由这样做。