15. januar 2001 - 16:57Der er
6 kommentarer og 1 løsning
Lave links fra en given mappe vha. ASP
Hej!
Jeg har en mappe på Intranettet som folk har mulighed for at uploade html-filer til.
Er der nogen der har nogle gode ideer til hvorledes man kan få listet disse filer så man efterfølgende kan klikke på et link og læse referatet/dagsordenen....
Den samler alle filer sætter dem op på række og laver et link til dem... godt nok?
<% \'******************************************************** \'* * \'* LOCALHOST UNDERMAPPESCRIPT * \'* -------------------------- * \'* * \'* Jakob Lund Kr@rup.dk - 4. juni 2000 * \'* * \'******************************************************** \'* * \'* ANVENDELSE: * \'* Letter processen med at komme fra localhost * \'* mappen til sine projektmapper. * \'* * \'******************************************************** \'* * \'* FUNKTION: * \'* Finder alle undermapper i localhost mappen * \'* og præsenterer dem som links i en HTML side. * \'* * \'********************************************************
\'Vi opretter et FileSystemObject med navnet \"fso\" Set fso = CreateObject(\"Scripting.FileSystemObject\")
\'Vi finder stien til det nuværende bibliotek \'og gemmer det i variablen \"sti\" sti=Server.mappath(\".\")
\'Vi anvender FileSystemObjectet \"fso\" \'til at lægge biblioteket i objektet \"folder\" Set folder = fso.GetFolder(sti)
\'Vi gemmer alle underbibliotekerne i objektet \"foldercollection\" Set foldercollection = folder.SubFolders%>
</STYLE> <SCRIPT LANGUAGE=\"JAVASCRIPT\"> function highlight (){ /* denne funktion finder ud af hvem der kaldte den derefter laver den baggrundsfarven på rækken om */
// Vi lægger det element der har kaldt funktionen i variablen \"kalder\" kalder = window.event.srcElement; //og sætter elementets styles baggrund til grå kalder.style.background = \"#F0F0F0\"; }
function normalize(){ /* denne funktion finder ud af hvem der kaldte den derefter laver den baggrundsfarven på rækken tilbage til normal */ // Vi lægger det element der har kaldt funktionen i variablen \"kalder\" kalder = window.event.srcElement; //og sætter elementets styles baggrund til hvid kalder.style.background =\"#FFFFFF\"; }
</SCRIPT> </HEAD> <BODY> <CENTER><H1><%=Sti%></H1></CENTER> <TABLE BORDER=\"0\" ALIGN=\"CENTER\" CELPADDING=\"2\" CELLSPACING=\"1\" width=\"500\"><% \'For alle mapper i denne mappe For Each foldername in foldercollection \'Så viser vi alle de mappenavne der ikke begynder med underscore \"_\" \'(for at fjerne alle systemmapperne fra oversigten) if left(foldername.name, 1) <> \"_\" then Response.Write(\"<TR><TD OnMouseOver=\'java script:highlight()\' OnMouseOut=\'java script:normalize()\' ALIGN=\'CENTER\'><A HREF=\'\" + foldername.name + \"\'>\" + foldername.name + \"/</A></TD></TR>\"+chr(13)) end if Next
\'Vi sletter de tre objekter igen set fso = nothing set folder = nothing Set foldercollection = nothing %> </TABLE> </BODY> </HTML>
<html> <head> <title></title> </head> <body> <% AbsolutePath = \"C:\\Inetpub\\wwwroot\\xxx\\\" RelativePath = \"xxx/\" Set fso = CreateObject(\"Scripting.FileSystemObject\") Set f = fso.GetFolder (AbsolutePath)
For Each f1 in f.Files If UCase(Right(f1.name,3)) = \"HTM\" Then Set fsoSystem = Server.CreateObject(\"Scripting.FileSystemObject\") Set fsoStream = fsoSystem.OpenTextFile(Server.MapPath(RelativePath & f1.name), 1, False) If Not fsoStream.AtEndOfstream Then strContent = fsoStream.ReadAll fsoStream.Close: Set fsoStream = Nothing Set fsoSystem = Nothing
intTitle = InStr(LCase(strContent), \"<title>\") If intTitle > 0 Then intTitle = intTitle + 7 intEndTitle = InStr(LCase(strContent), \"</title>\")
strTitle = Mid(strContent, intTitle, (intEndTitle - intTitle)) Else strTitle = f1 \' Ingen titel. Brug filnavnet. End If
Response.Write \"<div align=left><a href=\'\" & RelativePath & f1.name & \"\'>\" & strTitle & \"</a><br></div>\" End If Next %> </body> </html>
Hvis du har spørgsmål til dette skal du bare sige til.
<html> <head> <title></title> </head> <body> <% AbsolutePath = \"C:\\InetPub\\wwwintra\\xxx\\\" RelativePath = \"xxx/\" Set fso = CreateObject(\"Scripting.FileSystemObject\") Set f = fso.GetFolder(AbsolutePath) For Each f1 in f.Files If UCase(Right(f1.name,3)) = \"HTM\" Then Response.Write \"<div align=left><a href=\'\" & RelativePath & f1.name & \"\'>\" & f1.name & \"</a><br></div>\" End If Next %> </body> </html>
Det er det helt rigtige! MEN jeg kan ikke helt forstå hvordan den sorterer. Det ser ud til at den tager sorterer efter tidspunktet hvor filen er \"created\", men det synes jeg heller ikke helt kan passe! Det må være muligt at sortere i stigende orden efter navnet?
Som det er nu giver det lidt problemer når der er ved at komme mange filer i en mappe. Den viser f.eks. ikke referater i den rigtige rækkefølge. Måske kan man styre det på en anden måde? Det vil jeg lige tænke over!! Ellers er det lige det jeg mangler.
Hej Seagaard - Der soteres efter fil navn, så du kan numerere dine filer ved f.eks 01-fil.htm. Det du ser som link er <title>Navn på link</title> hvorved du selv bestemmer hvad der skal stå.
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.