2013-07-02 90 views
0

我想在服务器上保存文件(主要是图片和文档),但我有一个困境:它应该如何命名? (每个文件将在数据库记录 - ID,标题,文件名,扩展名,创建,...)如何命名服务器上的文件?

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

有没有更好的解决方案?

感谢您的回答。米哈尔

回答

0

解决方案2:忘记它。这是不确定的。

解决方案3可以正常工作。

解决方案1没问题。

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

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

大,这是正是我需要的!非常感谢你。 –

+0

当你只想在网页上显示它(在​​标签),但没有通过保存对话框窗口下载时,有没有办法将IDname转换为originalName? –

+0

您无权访问“保存对话框”(浏览器行为),因此您无法对其执行任何操作。否则,你有apache,mod_rewrite和.htaccess,但对于你想要的可能有点困难。你仍然可以尝试。 – kmas

4

我最初的想法是,这将通过ID命名(从DB - 每个名称将是唯一的)

这是正确的答案。

但当有人会下载它,它就会有丑陋的名称(ID)

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

0

还有另一个想法使用随机数和出随机数在文件名前

$random_digit=rand(0000,9999); 

$new_file_name=$random_digit.$file_name; 

,或使用你的最后的想法,当下载或显示其重命名为不进行身份

+0

我不喜欢这个随机数的想法 - 有很小的可能性,你已经有相同的名字(在更大的文件计数)。 –

相关问题