Kolla in Dimacs SiteTree.
Skulle behöva en filkatalog som ligger i en trädstruktur med expanderbara mappar. Har någon sätt en sådan någon stans?
16 svar · 635 visningar · startad av Jesper T
Skulle behöva en filkatalog som ligger i en trädstruktur med expanderbara mappar. Har någon sätt en sådan någon stans?
Kolla in Dimacs SiteTree.
Vide: Tack men det var någon slags betalkomponent, det är inte riktigt intressant.
Jag får göra en själv.
Går det på något vis att loopa ut alla foldrar subfoldrar och filer?
I detta exempel så lopas endast aktuell struktur i aktuell mapp.
Dim strfolder,rootname,Dirfolder
strfolder = "docs/"
rootname = server.mappath("docs")& "\"
Dirfolder = request.querystring("dir")
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(rootname & Dirfolder)
set Files = Folder.Files
'Lite obetydande kod
For each Item in Folder.SubFolders
response.write "<img src=imgs/folder_close.gif width=16 height=15> <a href='" & strScriptname & "?Dir="&dirfolder&"\"&Item.Name & "'>" & Item.Name & "</A><br>"
Next
For each Item In Files
response.write "<img src=imgs/"& fileType(Item.Name)& " width=20 height=17><a href="&strFolder&dirfolder&"\"&Item.Name&">"&Item.Name&"</A><br>"
Next
Du får bygga en rekursiv funktion som letar sig på djupet också.
[R] Vad säger jag för något? Vill du ha den dynamisk på klientsidan också så måste du bygga en rekursiv funktion, annars kan du bara skicka med aktuell folder för att få subfoldrar och filer.
Sedan får du bygga en funktion som hämtar sökvägen "ovanför" den mapp du står i, och skriva ut den.
Den redigerar vi bort igen pga av en liten bugg.
Vide skrev:
annars kan du bara skicka med aktuell folder för att få subfoldrar och filer.
Vad menar du med det? Jag skulle vilja ha den så här:
[red]Mapp1
UnderMapp1.1
Fil1.1.1
Fil1.1.2
UnderMapp1.2
UnderMapp1.3
Mapp2
UnderMapp2.1
Fil2.1.1
Mapp3
osv...[/red]
Det ska väl inte vara så svårt? Du har ju redan nu i princip en funktion. Gör en funktion eller sub av den kod du har, sen ser du till att köra den rekursivt inne i funktionen/subben på alla katalogerna du finner... (Går det? )
solbulle, precis vad jag menade... och ja, det går.
Typ detta listar ju en del...
<%
Dim strfolder,rootname,Dirfolder
strfolder = "docs/"
rootname = server.mappath("docs")& "\"
Dirfolder = request.querystring("dir")
Call explorer(rootname,Dirfolder)
Sub explorer(rootname,Dirfolder)
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(rootname & Dirfolder)
set Files = Folder.Files
'Lite obetydande kod
For each Item in Folder.SubFolders
response.write "<img src=imgs/folder_close.gif width=16 height=15> <a href='" & strScriptname & "?Dir="&dirfolder&"\"&Item.Name & "'>" & Item.Name & "</A><br>"
Call explorer(rootname,Dirfolder&"/"&Item.Name)
Next
For each Item In Files
response.write "<img src=imgs/"& fileType(Item.Name)& " width=20 height=17><a href="&strFolder&dirfolder&"\"&Item.Name&">"&Item.Name&"</A><br>"
Next
End Sub
%>
Härligt, solbulle!
Jag får lite fel på denna rad, något strular:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'GetSubFolders'
filetree.asp, line 45
Dim rootname, fso, folder
rootname = server.mappath("docs")& "\"
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(rootname)
[b]Rad 45-->[/b]Response.Write "<UL>" & GetSubFolders(folder) & "</UL>"
Sub GetSubFolders(pfolder)
Dim sFolders, fldr, fil
sFolders = "<LI>" & pfolder.Name
If pfolder.SubFolders.Count > 0 Or pfolder.Files.Count > 0 Then _
sFolders = sFolders & "<UL>"
For Each fldr In pfolder.SubFolders
sFolders = sFolders & GetSubFolders(fldr)
Next
For Each fil In pfolder.Files
sFolders = sFolders & "<LI>" & fil.Name & "</LI>"
Next
If pfolder.SubFolders.Count > 0 Or pfolder.Files.Count > 0 Then _
sFolders = sFolders & "</UL>"
sFolders = sFolders & "</LI>"
Set fil = Nothing
Set fldr = Nothing
GetFolder = sFolders
End Sub
Skall du använda den som en funktion (återge ett värde) så måste du göra det också.
[b]function[/b] GetSubFolders(pfolder)
Dim sFolders, fldr, fil
sFolders = "<LI>" & pfolder.Name
If pfolder.SubFolders.Count > 0 Or pfolder.Files.Count > 0 Then _
sFolders = sFolders & "<UL>"
For Each fldr In pfolder.SubFolders
sFolders = sFolders & GetSubFolders(fldr)
Next
For Each fil In pfolder.Files
sFolders = sFolders & "<LI>" & fil.Name & "</LI>"
Next
If pfolder.SubFolders.Count > 0 Or pfolder.Files.Count > 0 Then _
sFolders = sFolders & "</UL>"
sFolders = sFolders & "</LI>"
Set fil = Nothing
Set fldr = Nothing
[b]GetSubFolders[/b] = sFolders
End [b]function[/b]
En sista fråga: Går det att få hela sökvägen till filen ifrån "rootname" här?
For Each fil In pfolder.Files
sFolders = sFolders & "<LI>" & [b]fil.Name[/b] & "</LI>"
Next
Någon, som vet?
Jag har kört fast, kan ingen hjälpa mig?
Jag är oxå väldigt sugen på att veta hur man får tag i rootnamnet.
Hittade det:
fil.path