【问题标题】:How can i avoid same image name at the point of upload to filesystem如何在上传到文件系统时避免使用相同的图像名称
【发布时间】:2012-05-09 04:42:00
【问题描述】:

我有一个表单,用户可以在其中上传图片作为注册过程的一部分。但我的问题是,使用相同名称保存图像名称的用户在查看个人资料图片时可能会导致一些问题。如何在上传到文件系统时使图片名称唯一..

谢谢。

【问题讨论】:

  • 您是否考虑将文件重命名为 .jpg?
  • 见php的函数tmpfile()函数。所有文件都应使用临时文件名上传。然后,你用它做点什么。在这种情况下,当用户注册后,重命名文件。

标签: php mysql image upload unique


【解决方案1】:

如果这有帮助

$t = uniqid();
$filename='user-'.$t;
echo $filename; // user-1335601088 (always a different name)

【讨论】:

  • 我认为这行不通 - 它可能最终只有 60 个不同的潜在值,因为 date('s') 将始终返回 0-59 之间的值
  • 我不知道mktime(uniqid()) 会给你什么回报。为什么不单独使用rand()uniqid()
  • 非常感谢,我编辑了答案,只是忘了删除mkTime
【解决方案2】:

我建议使用以下方案之一:

  • 使文件名成为用户名/用户 ID 的函数
  • 将文件名设为随机值
  • 使文件名成为文件内容的函数(例如 MD5 校验和)

【讨论】:

  • 如果我要使用 userID 选项,那么在我注册了用户之后,上传就会进行一步。或者有没有更好的方法将这一切作为一个过程来完成?
  • 如何处理用户上传的未完成注册过程的图像是一个棘手的问题。您必须进行某种清理,或者只是按照您的建议更改流程,并且只允许人们在注册后进行上传。
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多