读取文件,路径写入数据库,并保持目录结构用于分组显示
PS:原本是想用ASP实现,但感觉有些难度,考虑用C#来做,发上来的ASP代码仅供参考,主要是思路。
有一个目录结构,现在想把所有文件链接写入数据库,但还想在显示的时候保持目录的结构进行分组,以便区分同名文件。
有两种想法,一个是直接读取文件,将全部路径写入数据库,这样缺点是不容易分组显示。
另外一种方法是 遍历文件,就是下面的方法,但问题是我想在插入数据库后返回父目录的ID,应该会用到堆栈,但ASP中怎么实现类似方式?
数据结构是
FID FName ParID Layer
思路是通过ParID连接各级目录之前的关系。
现在的问题是目录可以遍历,目录和文件都能得到,关键问题是该怎么在返回上一级目录后获取父目录呢》也就是父目录写入数据库后的ID?遍历搞的有些头大,是不是我这思路有问题?
遍历目录的代码:
<%OPTION EXPLICIT%>
<%
dim currentPath,fso,PFD,MF,SFolder,i,parID
call main()
'==============
Sub main()
i=0 '//layer
Set fso =Server.CreateObject( "Scripting.FileSystemObject ")
Set PFD=fso.getfolder(server.MapPath( "/intranet/orientation/ "))
Response.Write( " <table> ")
call GetFileObj(PFD)
call GetFolderObj(PFD)
Response.Write( " </table> ")
End sub
Sub GetFolderObj(FD_getfolder)
i=i+1
For each SFolder in FD_getfolder.subfolders
call GetFileObj(SFolder)
call GetFolderObj(SFolder)
Next
End Sub
'//打印目录
Sub GetFileObj(FD_getfile)
WritePath(FD_getfile)
For each MF in FD_getfile.files
call WriteFileMes(MF)
Next
End Sub
'//打印当前目录
Sub WriteFileMes(MyFileObj)
%>
<tr >
<td> <%=MyFileObj.name%> ##### <%=i%> </td>
</tr>
<%
'//将当前目录名以及layer和父目录ID写入数据库
End Sub
'//打印当前目录下文件
Sub WritePath(FDObj)
'//获取当前的相对路径
dim folder
folder=lcase(FDObj.path)
currentPath=mid(folder,instrRev(folder, "orientation "),len(folder)-1)
if right(currentPath,1)= "/ " then currentPath=left(currentPath,len(currentPath)-1)
%>
<tr>
<td bgcolor= "#FFFFD0 " > <%=FDObj.path%> ### <%=currentPath%> ##### <%=i </td>
</tr>
<%
'//将当前文件名以及layer和所在目录ID写入数据库
End Sub
%>
------解决方案--------------------sf
------解决方案--------------------你要递归目录
将获取的地址写入数据库
------解决方案--------------------库结构为
ID ParentID Name FileOrDirectory
分解的时候把文件夹和文件按照这种方式存储
存储文件夹的时候判断一下ParentID、Name和FileOrDirectory联合是否存在
如果存在则略否则插入
然后按照树的形式读取数据
分解路径可以根据上传文件的 "\ "符号一层层的分解
个人建议,参考一下