【问题标题】:About generating file names for uploaded files关于为上传的文件生成文件名
【发布时间】:2016-02-14 22:19:51
【问题描述】:

我只是从表单上传文件,我不确定生成文件名的方法..

在这种情况下我应该使用这样的东西:

 sha1(uniqid(mt_rand(), true))

我应该在哪里使用这个:

uniqid()

【问题讨论】:

    标签: php forms file-upload upload


    【解决方案1】:

    uniqid() 足以作为文件名。

    但请注意,uniqid() 和 sha1() 都不会为您提供绝对唯一的字符串。因此,在将文件保存到 IO 之前,请检查是否已存在具有该名称的文件。

    【讨论】:

      【解决方案2】:

      我同意卢卡斯泰纳的观点。他们不会给你绝对的独特性;使用GUID

      您可以非常简单地定义 GUID 函数,如下所示:

      function getGuid() {
      
          return strtolower( sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', 
                              mt_rand(0, 65535), 
                              mt_rand(0, 65535), 
                              mt_rand(0, 65535), 
                              mt_rand(16384, 20479), 
                              mt_rand(32768, 49151), 
                              mt_rand(0, 65535), 
                              mt_rand(0, 65535), 
                              mt_rand(0, 65535)) );
      
      // from the official PHP documentation
      
      }
      

      在我看来,您只是在使用 sha1 函数增加运行时间(无论多小);你最好使用uniqid() 函数。但是,文档确实这样说:

      警告

      此函数不会创建随机或不可预测的字符串。此功能不得用于安全目的。使用密码安全的随机函数/生成器和密码安全的哈希函数来创建不可预测的安全 ID。

      所以,如果你想要加密安全的随机数,你可以使用:

      • random_int()
      • openssl_random_pseudo_bytes()

      我更喜欢第二个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 2014-08-14
        • 1970-01-01
        相关资源
        最近更新 更多