应该使用什么设计来保存文件信息

时间:2011-07-31 10:49:03

标签: php mysql flex actionscript directory

我想用php / mysql为我的文件创建flex / actionscript目录视图。我有一些想要分享的想法:

1)我正在考虑创建表(在mysql中)“文件”和另一个表“文件夹”,当用户插入i时,将需要来自“files”和“folders”的所有数据,其中Username ='something'。但问题是,我会在表格内创建很多条目。例如,如果我有100个用户,并且每个用户可以创建100个条目(文件或文件夹),则意味着我将在表中获得10000个条目。

2)我的第二个想法,我认为更安全的方法是创建表“用户”,其中将设置id,用户名,密码,...,文件,文件夹。在文件(文本格式条目)中将列出有关文件的信息,它们将被分成“*”符号,如下所示:

id*file name*size(in kbytes)*path*status 
example:
15*test.exe*150*/root/*private
16*test2.exe*200*/root/folder1/*public
17*test3.exe*5600*/root/folder1/subfolder/*private
...

当用户插入时,此信息将在flex时输出,并且actionscript将捕获它。但问题是,当我编辑1个文件信息(例如1个文件名“test.exe”到“editedtest.exe”)时,我将在mysql中加载所有数据:

15*editedtest.exe*150*/root/*private 
16*test2.exe*200*/root/folder1/*public
17*test3.exe*5600*/root/folder1/subfolder/*private

现在这里只有3个文件信息,但可以有超过1000个。

那么您怎么看?我该如何解决我的任务?或者它是更好的方式,我只是不知道它?请写下您的建议和想法。

2 个答案:

答案 0 :(得分:1)

我将使用术语“filesystem”来表示每个用户的文件/文件夹结构。

不要害怕数据库中的大量行,数据库旨在解决这个问题。

另外,我 t为您提供了许多优势:

  • 延迟加载:在您的目录树中,您只能获取当前用户的根目录/文件,当用户想要进入子文件夹时,您可以加载此子文件夹的内容。如果将整个文件系统结构存储在一个字符串中,即使只需要一行,也必须加载整个结构
  • 单位更新:使用数据库,您可以在不加载完整文件系统结构的情况下更新文件/文件夹
  • 更少的代码:您不必解析文本字符串来重新创建路径,您可以“按原样”将其存储在数据库中
  • 索引:如果每行存储一个文件/文件夹,则可以对这些文件/文件夹进行索引以加速搜索。如果将整个文件系统结构存储在其所有者行中,则无法有效执行搜索。

答案 1 :(得分:0)

如何完成:

  1. 在mysql中保存用户有权访问哪个子目录。

  2. 编写一个PHP脚本,读取Flash应用程序查询过的目录。检查目录是否属于该用户。返回该目录的所有文件。在Flash中显示导航按钮的方式与Web服务器在directoy列表页面中显示按钮的方式相同,例如:http://www.css-zibaldone.com/articles/directory/examples/3/3.html(用于apache目录列表示例)。

  3. 此方法将针对每个请求执行1次目录遍历。然后,您可以通过启用遍历来返回当前目录及其直接子目录文件来优化此情况。或者将结果缓存在硬盘上的某些文件中。

  4. 我找到了AJAX的文件浏览器应用程序:http://www.ajaxfilebrowser.com/