Avatar billede gummisko Nybegynder
04. september 2006 - 17:40 Der er 18 kommentarer og
1 løsning

Vise foldere og filer i en mappe med ASP

Hej guruer!

Hvordan får man vist indholdet i en mappe på en IIS server?

Der vil normalt være filer og foldere i mappen - man skal så ved at klikke enten åbne en fil eller gå ind i en mappe og se filerne i denne. Disse filer kan så åbnes ved et klik.

Jeg har lavet "mappe gennemsyn tilladt" på serveren og har en eksisterende løsning ved blot at kalde URL til mappen, men designet er forfærdeligt.
Håber på Jeres hjælp.
Tak!
Avatar billede madeindk Nybegynder
04. september 2006 - 18:14 #1
<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(SubFolder.Name))
    For Each File In SubFolder.Files
   
    response.write("-" & File.Name & "<br>")
   
    Next
   
Next
%>
Avatar billede gummisko Nybegynder
04. september 2006 - 20:26 #2
Hej

1. Alle foldere med indhold listes fint MEN mangler links på filerne så disse kan åbnes   

2. Efter oplistningen fås følgende fejlmelding:

Server.MapPath() error 'ASP 0173 : 80004005'

Invalid Path Character

/mat/HHX/Materiale/2006/studieomr_grundf/indhold.asp, line 18

An invalid character was specified in the Path parameter for the MapPath method.


Koden i linie 18 er:
Set SubFolder = FSO.GetFolder(Server.MapPath(SubFolder.Name))

Kan du klare dette???
Tak!
Avatar billede gummisko Nybegynder
04. september 2006 - 20:27 #3
Her ses koden på siden:
<html>
<title>Filesystem objektet</title>
<head>
</head>
<body>

<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(SubFolder.Name))
    For Each File In SubFolder.Files
   
    response.write("-" & File.Name & "<br>")
   
    Next
   
Next
%>
</body>
</html>
Avatar billede madeindk Nybegynder
04. september 2006 - 20:40 #4
<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(SubFolder.Name))
    For Each File In SubFolder.Files
   
    response.write("<a href=""" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")
   
    Next
   
Next
%>
Avatar billede madeindk Nybegynder
04. september 2006 - 20:43 #5
Men tror ikke mapperne må hedde noget med punktum, bindestreg og sådan noget. Du skal kontrollere at dine mapper ikke hedder mærkelige ting.
Avatar billede gummisko Nybegynder
05. september 2006 - 00:46 #6
Hej
Vises fint men:
1. Stadig fejlmelding nederst på siden:

Server.MapPath() error 'ASP 0173 : 80004005'

Invalid Path Character

/mat/HHX/Materiale/2006/studieomr_grundf/indhold.asp, line 18

An invalid character was specified in the Path parameter for the MapPath method.


2. Linkene til filerne i subfolderne virker ikke - Siden findes ikke

Kom igen, please!!
Avatar billede madeindk Nybegynder
05. september 2006 - 09:04 #7
Som jeg har skrevet tidliere må mapperne ikke hedde hedde noget med punktum, kommaer, bindestreger osv. - læs evt. nærmere om det her - http://classicasp.aspfaq.com/files/directories-fso/why-do-i-get-an-invalid-path-character-error.html

Denne kode er ikke testet, men burde rette problemet med ikke at kunne finde filerne ved klik på link:

<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(SubFolder.Name))
    For Each File In SubFolder.Files
   
    If strMappe = "." then
   
    response.write("<a href=""" & SubFolder.Name & "/" & File.Name & " target=""_blank"">" & File.Name & "</a><br>")

    Else

    response.write("<a href=""/" & strMappe & "/" & SubFolder.Name & "/" & File.Name & " target=""_blank"">" & File.Name & "</a><br>")

    End if   

    Next
   
Next
%>
Avatar billede gummisko Nybegynder
06. september 2006 - 07:26 #8
har fjernet et komma i et mappe navn, så nu vises siden uden fejl
MEN når jeg klikker på en af de viste filer:

HTTP Error 404 - File or directory not found.
Internet Information Services (IIS)

Så det er altså kun linkene jeg mangler at få til at virke.
Hvad skal jeg gøre??
Tak.
Avatar billede madeindk Nybegynder
06. september 2006 - 12:54 #9
Kan jeg få lov at se den side det ligger på? Det er lidt nemmere så :-)
Avatar billede gummisko Nybegynder
06. september 2006 - 16:09 #10
Hej
Det er ikke helt godt da den ligger i en afdeling med password, sorry.
Avatar billede madeindk Nybegynder
06. september 2006 - 17:52 #11
Ok - men kan du fortælle mig hvad mappen hedder den skal vise undermapper fra så?
Avatar billede madeindk Nybegynder
06. september 2006 - 18:41 #12
Jeg er meget sikker på denne kode virker...

<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(strMappe & "/" & SubFolder.Name))
    For Each File In SubFolder.Files
   
    If strMappe = "." then
   
    response.write("<a href=""" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")

    Else

    response.write("<a href=""/" & strMappe & "/" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")

    End if   

    Next
   
Next
%>
Avatar billede gummisko Nybegynder
08. september 2006 - 16:06 #13
Hej

Når jeg kalder et doc i en mappe er slutningen på URLen:
beskrivende%20statistik.doc%20target=

Hvis jeg fjerner %20target= er det i orden
Kan du rette koden til så %20target= er væk???

Tak
Avatar billede madeindk Nybegynder
08. september 2006 - 16:13 #14
Åh ha - kedelig bug ;-)

<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(strMappe & "/" & SubFolder.Name))
    For Each File In SubFolder.Files
   
    If strMappe = "." then
   
    response.write("<a href=""" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")

    Else

    response.write("<a href=""/" & strMappe & "/" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")

    End if   

    Next
   
Next
%>
Avatar billede madeindk Nybegynder
08. september 2006 - 16:14 #15
Hov - fik dem ikke sat ind...

<%
' Definer hvilken mappe der skal vises undermapper fra
strMappe = "."

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
                   
Set Folder = FSO.GetFolder(Server.MapPath(strMappe))
For Each SubFolder In Folder.SubFolders

response.write("<b>" & SubFolder.Name & "</b><br>")

    Set SubFolder = FSO.GetFolder(Server.MapPath(strMappe & "/" & SubFolder.Name))
    For Each File In SubFolder.Files
   
    If strMappe = "." then
   
    response.write("<a href=""" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")

    Else

    response.write("<a href=""/" & strMappe & "/" & SubFolder.Name & "/" & File.Name & """ target=""_blank"">" & File.Name & "</a><br>")

    End if   

    Next
   
Next
%>
Avatar billede madeindk Nybegynder
08. september 2006 - 16:15 #16
Hvad i alverden sker der her... Den sætter dem ikke ind, når jeg skriver dem... Sæt bare 2 x " efter <a href=""" & SubFolder.Name & "/" & File.Name & " altså (hvis den gider skrive det) a href=""" & SubFolder.Name & "/" & File.Name & """

og nedeunder <a href=""/" & strMappe & "/" & SubFolder.Name & "/" & File.Name & """ (hvis den ikke gider - så sæt 2 x " efter det sidste "
Avatar billede gummisko Nybegynder
13. september 2006 - 10:54 #17
YES! Så var den der!

Smid lige et svar - og tusind tak for hjælpen!!!
Avatar billede madeindk Nybegynder
13. september 2006 - 16:50 #18
Her er mit svar.
Avatar billede madeindk Nybegynder
13. september 2006 - 16:50 #19
Næh, det var det ikk ;-)

Prøver lige igen... Her er mit svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester