【问题标题】:Recursive folder listing in a drop down menu, in php下拉菜单中的递归文件夹列表,在php中
【发布时间】:2011-04-04 13:48:22
【问题描述】:

我正在构建一个文件管理器,它允许用户在文件夹内(文件夹内)创建文件夹来存储他们的文件。我没有真正限制文件夹的深度,但我可能会将其设为 10 或类似的东西。

我怎样才能在下拉菜单中列出所有文件夹(以树形结构),像这样?

/
/Folder 1
/Folder 2
  /Child of folder 2
     /Child of child of folder 2
  /Another Child of of folder 2
/Folder 3

(也许更漂亮一点)。

我使用mysql来存储文件夹数据

CREATE TABLE IF NOT EXISTS `folders` (
  `f_id` int(11) NOT NULL AUTO_INCREMENT,
  `f_parent` int(11) NOT NULL,
  `f_owner` int(11) NOT NULL,
  `f_name` varchar(255) NOT NULL,
  `f_desc` varchar(1000) NOT NULL,
  `f_added` int(11) NOT NULL,
  `f_files` int(11) NOT NULL,
  `f_private` int(1) NOT NULL,
  `f_password` varchar(255) NOT NULL,
  PRIMARY KEY (`f_id`),
  UNIQUE KEY `f_parent` (`f_parent`,`f_owner`,`f_name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

【问题讨论】:

标签: php mysql directory


【解决方案1】:

当你可以使用 RecursiveIteratorIterator 类时,为什么要在 mysql 中存储文件夹信息

$folder_path="PATH_TO_YOUR_FOLDER" 

$obj= new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder_path), 
RecursiveIteratorIterator::SELF_FIRST);

foreach($obj as $name => $val){
    echo "$name\n";
}

它将打印给定文件夹中的所有目录和文件 如果您只想打印文件夹名称,请添加此条件

echo $folder (is_dir($name)) ?$name :"";

不需要将文件夹信息存储在数据库中,除非您有特定要求将文件夹信息存储在数据库中

【讨论】:

  • 我确实有一个特定要求,即文件夹不能是 HD 上的实际文件夹。
【解决方案2】:

How could I list all the folders (in a tree structure) inside the drop down menu, like so?
什么是“下拉菜单”?树听起来更像 -> TreeView。

在 Javascript 中有很多 TreeView“控件”的实现,例如 http://developer.yahoo.com/yui/treeview/,当然你也可以使用 php 来提供数据。

【讨论】:

    【解决方案3】:

    当我想构建类似的东西时,我发现此资源对我很有帮助:

    http://abeautifulsite.net/blog/2008/03/jquery-file-tree/

    上述实现的好处是它使用文件系统来存储文件和层次结构,它不适用于复杂的东西,但如果您的应用程序不需要太多,它可能正是您需要的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2021-12-14
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多