【问题标题】:How to name a file on the server? [closed]如何命名服务器上的文件? [关闭]
【发布时间】:2013-07-02 07:51:33
【问题描述】:

我想在服务器上保存文件(主要是图像和文档),但我有一个难题:应该如何命名? (每个文件都会在 DB 中记录 - ID、标题、文件名、扩展名、创建...)

  1. 我的第一个想法是它会用 ID 命名(来自 DB - 每个名称都是唯一的),但是当有人下载​​它时,它的名称 (ID) 会很丑
  2. 第二个想法是它会以原始文件名命名,但不确定名称是否唯一。所以每次我上传东西时,我都必须检查所有数据库是否有重复的名称。
  3. 最后一个想法是将 ID 与名称 (fileName_ID) 连接起来,这样它会是唯一的,但我对此并不满意。

有没有更好的解决方案?

感谢您的回答。迈克尔

【问题讨论】:

    标签: php filenames uniqueidentifier


    【解决方案1】:

    我的第一个想法是它将通过 ID 命名(来自 DB - 每个名称都是唯一的)

    这是正确的答案。

    但是当有人下载​​它时,它的名字(ID)会很丑

    这就是为什么我们在 Content-Disposition 标头中给它一个漂亮的名字。

    【讨论】:

      【解决方案2】:

      解决方案 2:忘记它。完全不确定。

      方案3可以。

      解决方案 1 没问题。

      您只需在用户下载文件时更改文件名。

      header('Content-Disposition: attachment; filename="'.getFileNameFromDB($file_id));
      

      【讨论】:

      • 太好了,这正是我需要的!非常感谢。
      • 当您只想在网页上显示它(在 标签中)而不是通过保存对话框窗口下载时,有什么方法可以将 IDname 转换为 originalName ?
      • 您无权访问“保存对话框”(浏览器行为),因此您无法对其进行任何操作。否则,你有 apache、mod_rewrite 和 .htaccess,但你想要的可能有点困难。你还是可以试试的。
      【解决方案3】:

      还有一个想法是使用随机数,并在文件名前取出随机数

      $random_digit=rand(0000,9999);
      
      $new_file_name=$random_digit.$file_name;
      

      或使用您的最后一个想法,并在下载或显示时重命名它而不使用 id

      【讨论】:

      • 我不喜欢这个带有随机数的想法 - 您已经拥有相同名称的可能性很小(在大量文件中)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2012-08-06
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      相关资源
      最近更新 更多