【问题标题】:Documents repository (PHP)文档存储库 (PHP)
【发布时间】:2011-06-14 11:16:06
【问题描述】:

这篇文章更多是为了获得建议和想法,而不是解决问题。有点难以解释,但我会尽力而为。

我有一个文档存储库,其中包含一个带有 PDF 的唯一目录,这些文档必须在“虚拟”文件夹中显示给最终用户,因为它们必须在其中的许多文件夹中可见。我所说的虚拟文件夹是文件系统中目录的正常层次结构,但最终的文档必须取自前面提到的 PDF 存储库。

例子:

repo/{dozens of PDF}
rootfolder/sub-folder1/sub-folder11/contracts1.php
          /sub-folder2/contracts1.php
          /sub_folder3/sub-folder31/contracts2.php
          /sub_folder4/sub-folder41/sub-folder42/sub-folder43/contracts3.php
          /sub-folder5/contracts5.php

这是我的老板希望很快准备好的项目,所以此时,我一直在使用php-file-tree,它会生成一种很好的树状方式来浏览文件夹,每个文件夹中的最终文件是一个包含 PDF 列表的 php 文件。它工作得很好,但是对于每一次更改,我都需要编辑那些 php 文件,并且将来这个任务应该由其他人(一个不知道 HTML/PHP 编辑知识的办公室用户)以一种简单的方式完成。

你们会推荐我什么?

两个重要的事情是:

  1. PDF 必须在一个 位置,单个目录

  2. 最终用户必须看到一个树状页面

谢谢。

法比恩

【问题讨论】:

    标签: php javascript mysql file repository


    【解决方案1】:

    免责声明:这可能有点多,但无论如何它也许有用。

    他们按照我的方式去做:

    • ExtJsExt.tree.Panel 一起使用(一棵树是您的pdf 源,第二棵树是虚拟目录)

    • 将最终的树存储在数据库或 xml 文件中

    • 为办公室用户构建一个迷你管理界面

    • 为最终用户构建一个视图,仅显示虚拟目录树及其 pdf。

    【讨论】:

      【解决方案2】:

      我会创建一个真正的目录树虚拟,也就是说,我不会在文件系统中创建它,而是在 DB 中创建它。文件列表也将在数据库中(即,数据库中的文件名,文件 - 文件系统上)。另一个数据库表将用于将文件链接到目录。

      create table file (
          id integer primary key,
          name varchar(64) not null
      ) engine = InnoDB;
      
      create table directory (
          id integer primary key,
          parent_id integer,
          name varchar(64) not null
      ) engine = InnoDB;
      
      create table file_in_directory (
          file_id integer not null,
          directory_id integer not null,
          primary key (file_id, directory_id)
      ) engine = InnoDB;
      
      insert into directory (id, parent_id, name) values
          (1, null, 'rootfolder'),
          (2, 1, 'sub-folder1'),
          (3, 1, 'sub-folder2'),
          (4, 1, 'sub-folder3'),
          (5, 1, 'sub-folder4'),
          (6, 1, 'sub-folder5'),
          (7, 2, 'sub-folder11'),
          (8, 4, 'sub-folder31'),
          (9, 5, 'sub-folder41'),
          (10, 9, 'sub-folder42'),
          (11, 10, 'sub-folder43');
      
      insert into file (id, name) values
          (1, 'contracts1.php'),
          (2, 'contracts2.php'),
          (3, 'contracts3.php'),
          (4, 'contracts5.php');
      
      insert into file_in_directory (file_id, directory_id) values
          (1, 7), -- rootfolder/sub-folder1/sub-folder11/contracts1.php
          (1, 3), -- rootfolder/sub-folder2/contracts1.php
          (2, 8), -- rootfolder/sub_folder3/sub-folder31/contracts2.php
          (3, 11), -- rootfolder/sub_folder4/sub-folder41/sub-folder42/sub-folder43/contracts3.php
          (4, 6); -- rootfolder/sub-folder5/contracts5.php
      

      【讨论】:

      • 感谢您的回答 binayLV。我已经开始做一些非常相似的事情,但是像这样我的问题更多是在为最终用户显示树上。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      相关资源
      最近更新 更多