ogranise 和命名上传文件的最佳方法是什么?
我可能错了,但我觉得将所有文件保存在一个目录中并不是一个好习惯,因为如果需要浏览文件,这会导致文件系统变慢?
欢迎所有想法和想法
干杯
ogranise 和命名上传文件的最佳方法是什么?
我可能错了,但我觉得将所有文件保存在一个目录中并不是一个好习惯,因为如果需要浏览文件,这会导致文件系统变慢?
欢迎所有想法和想法
干杯
我使用这样的函数为上传的文件生成 3 级文件夹树:
function get_1000_path($id)
{
$id = strval($id);
$id = str_repeat("0", 9 - strlen($id)).$id;
$path = substr($id, 0, 3)."/".substr($id, 3, 3)."/".substr($id, 6, 3)."/";
return $path;
}
所以一个子文件夹中的最大文件数是 1000,文件系统可以正常工作
我认为这取决于您的系统/站点或需求,即。对于用户门户,这样可能会更好user_images/USER-ID/filename-unid_id.jpg
。例如,这可能是uploads/news_images/YYYY/MM/DD/filename-unid_id.jpg
新闻站点的有用类型。在这一点上,它不需要像 md5 这样的大 unid_id 或其他东西,您可以使用 php hash
,如:$unid_id = hash('crc32b', microtime())
。因为存在强硬勾结的可能性。
// in your upload file
$dir = "uploads/news_images/". date("Y-m-d");
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
if (!is_writable($dir)) chmod($dir, 0777); // try again changing mod
}
但是,在这两个示例中,您都需要存储每个文件的文件名/路径。这样,你就用这种方式来存储数据(我个人在存储很多数据时使用json格式,如果我不需要搜索的话);
// table "news_images"
id | file_name | file_data
--------------------------
1 | blue fish | {"path":"2012/12/12", "slug":"blue-fish-9834a12b", "ext":"jpg" ...
祝你好运。。
这取决于您的应用程序是如何工作的。
如果它类似于用户画廊,我会简单地为每个用户创建一个文件夹,然后是年 -> 月结构。
如果文件由所有用户共同共享,我会根据时间(年 -> 月 -> 周 -> 日)将它们组织在不同的目录中。如果您的网站预计不会有很多流量,那么一年 -> 月的划分就足够了。
我会使用uniqid()函数来重命名上传的文件,这样就不需要检查覆盖或重复。