【问题标题】:PHP Unique Identifier for a File文件的 PHP 唯一标识符
【发布时间】:2014-12-14 18:39:49
【问题描述】:

如果我想将数据库中的内容链接到文件,我可以使用什么来唯一引用数据库中的文件,而不是文件或可能更改的创建/修改日期名称。是否有其他文件独有的东西不会更改并且可用于引用数据库中的文件?

我想引用对应于 m3u8 媒体文件的 db 内容数据,因此当我播放文件时,会检索并显示 db 内容。我希望能够修改 m3u8 文件名并更改其内容,因此我需要使用文件名或 mtime 以外的其他内容来引用该文件。

【问题讨论】:

  • 生成一个唯一的 id,或者使文件名保持不变。
  • 或者使用加密散列(注意,如果同一个文件被上传两次,它将具有相同的散列)。
  • 文件名 - 它的 完整路径 是文件具有唯一标识它的唯一属性(在文件系统中)。如果您需要其他内容,则必须将该新方法与文件名结合起来。如果要生成唯一的文件名,请参考tempnam函数。

标签: php file reference unique


【解决方案1】:

我可能会投反对票,但我必须分享。

我通常用time() 来解决这个问题,因为time() 重复条目的可能性几乎为零(除非奇迹般地两个文件处理同时发生)。 我不止于此,我有时会在字符串中添加用户名,以及一些其他随机代码,使其几乎可以防重复(可能性几乎为零)。

假设文件名是 super-awersome-pdf-file.pdf 。我在它前面添加time()(这是一个字符串),然后是其他一些东西。该文件名本身成为一个唯一的 id。此外,我还将信息存储在数据库表中,以赋予它另一个唯一 ID。因此,我有两件事要处理。

通过保持文件名少于 60-70 个字符,您可以通过这种方式制作一些非常独特的文件名。然后您可以将有关它的信息添加到数据库中。

专业人士: 几乎永远不会得到重复的文件名

缺点:但是这可能会创建重复文件,因为系统会看到这两个文件具有不同的文件名。

所以,没有重复的文件名,但如果用户不小心,可能会出现一些重复的文件。

希望这会有所帮助。

【讨论】:

  • 感谢您的评论,您给了我一个想法,即我可以在文件名前加上一个唯一的 id,即 time(),然后是一个分隔符,即下划线。这样下划线后的文件名可以更改,但标识符将保留并在数据库中被引用。
猜你喜欢
  • 2012-04-25
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 2013-02-19
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多