13. juli 2005 - 11:55Der er
12 kommentarer og 1 løsning
Modificer "Vis alle filer i mapperene" script
Hejsa
Jeg har et script som går ind og og finder alle filer i den mappe som scriptet ligger i...
De modificeringer jeg mangler er: # Mulighed for at bestemme hvilken mappe scriptet skal hente filerne i # At det KUN er billed filer som bliver vist..
Mit script:
<% Sub RecurseDir(objFolder) response.write "<optgroup label=""" & objFolder.name & """>" & vbCrLf For Each f in objFolder.Files response.write "<option value=""" & objFolder.path & "\" & f.name & """>" & f.name & vbCrLf Next response.write "</optgroup>"
For Each f in objFolder.SubFolders RecurseDir(f) next End Sub
Du kan vel lave en <select> som indeholder mapperne, hvis det alt sammen er undermapper til en bestemt mappe kan du tilsvarende lave en for løkke som du allerede har, som finder alle mapperne i den mappe Altså hvis du har "dinsti/mappe1" og "dinsti/mappe2" osv osv så kan du med fso løbe "dinsti" igennem og finde mapperne. De mapper lister du i en select, og ud fra valget i selecten sætter du så din path
hvis det kun er billed filer som skal vises så tjekker du i din for løkke på f Jeg mener det hedder f.extension eller f.getextensionname , det kan evt tjekkes op på msdn.com Du bliver nok nød til at lave evt et array med gyldige endelser og så slå filens endelse op i det array
ok jeg har desværre ikke mulighed for strikke det sammen lige nu :o( .. måske en anden har ellers kigger jeg forbi i morgen engang Er på ferie nemlig ;o)
Howdy så er jeg tilbage fra ferie Jeg har ikke været helt sikker på hvad du præcis ønskede, og jeg er heller ikke helt med på din onchange Men jeg har bikset et lille script sammen som udfra den mappe scriptet ligger i laver en select bestående af hele mappestrukturen under den aktuelle mappe. Dvs den finder undermapper, undermappers undermapper osv ;o) Når du vælger en given mappe dannes en select med de billeder som er i den valgte mappe Når du vælger i denne select vises billedet Jeg har lavet et array med jpg,bmp,gif som kan udvides til flere typer Jeg vil ikke lave mere lige vupti nu, for det er jo muligt du har tænkt anderledes, og så er det jo spild af tid ;o)... men sig endelig til så kan vi justere det til dine behov :o) ----- <% scriptName = Request.ServerVariables("SCRIPT_NAME") pathEnd = instrrev(scriptName,"/") baseFolder = left(scriptName, pathEnd) path = Server.Mappath(baseFolder)
Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(path)
Function getFolderOptions(f) temp = "" For Each folder In f.SubFolders webFolder = webFolder & "/" & folder.Name temp = temp & "<option value="""&folder.Path&","&webFolder&""">"&indent&" "&folder.Name&"</option>"&vbCrLf indent = indent & "--" temp = temp & getFolderOptions(folder) indent = Left(indent,Len(indent)-2) webFolder = replace(webFolder,"/"&folder.Name,"") Next getFolderOptions = temp End Function
Function getFiles(f,webFolder) temp = "<form action=""test.asp"" method=""post"">"&vbCrLf temp = temp & "<select name=""file"" size=""1"" onchange=""document.getElementById('pict').src=this.value"">"&vbCrLf For Each file In f.Files If lookup(LCase(fso.GetExtensionName(file))) Then temp = temp & "<option value="""&webFolder&"/"&file.Name&""">"&file.Name&"</option>"&vbCrLf End If Next temp = temp & "</select>"&vbCrLf temp = temp & "</form>"&vbCrLf getFiles = temp End Function
Function lookup(ext) ok = False For i=0 To Ubound(okExt) If okExt(i) = ext Then ok = True End If Next lookup = ok End Function
response.write getFolders(f) if request.form("folder") <> "" then path = split(request.form("folder"),",")(0) webFolder = split(request.form("folder"),",")(1) set f = fso.GetFolder(path) response.write getFiles(f,webFolder) end if %>
og som det altid er med noget hurtig skrevet så får man ikke taget hensyn til alle fejlkilder Du kan være heldig det virker, men skift alligevel denne ud for den gør det galt i nogen tilfælde hos mig -- webFolder = replace(webFolder,"/"&folder.Name,"") -- skiftes til -- webFolder = Left(webFolder,Len(webFolder)-Len("/"&folder.Name))
Som nu så gør man det jo til dels ved at vælge det fra en select boks Det kan laves om til en input boks med text hvor man skriver navnet på den mappe som skal tælle som den "øverste" Er det det du mener ? For så prøver jeg det Du skal dog lige tænke på at det kræver at man ved hvad mapperne hedder ! :o)
Ja det er jo det... Men spørgsmålet omhandlede at jeg skulle kunne indstille URL'en i scriptet for dets rod...
Så er du ikke venlig at lave sådan at jeg indtaste f.eks "../uploaded/rod/" og så henter den alle filer, undermapper og filerne i undermapperne fra "rod" ?
jo da :o) så tager du bare de her fire linjer -- scriptName = Request.ServerVariables("SCRIPT_NAME") pathEnd = instrrev(scriptName,"/") baseFolder = left(scriptName, pathEnd) path = Server.Mappath(baseFolder) -- og erstatter med denne ene
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.