Avatar billede bodyguard Nybegynder
13. juli 2005 - 11:55 Der 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

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)

%>
      <SELECT class=dropdown style="WIDTH: 200px" onchange="_Format(Editor1,'insertImage',this.options[this.selectedIndex].value);this.selectedIndex=0;">
    <OPTION class=bold>Diverse Billeder</OPTION>
<%
RecurseDir(f)
set fso = nothing
%>
    </OPTGROUP>
      </SELECT>
Avatar billede busschou Praktikant
13. juli 2005 - 12:05 #1
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
Avatar billede bodyguard Nybegynder
13. juli 2005 - 13:12 #2
Øhhhh... Se se jeg har postet dette spørgsmål med fuld point fordi at jeg ikke har er mindste forstand på denne type kode...
Avatar billede busschou Praktikant
13. juli 2005 - 13:21 #3
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)
Avatar billede bodyguard Nybegynder
13. juli 2005 - 15:25 #4
oki, kan sagtens vente til i morgen :)
Avatar billede busschou Praktikant
14. juli 2005 - 11:29 #5
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)

indent = ""
webFolder = ""
okExt = Array("jpg","gif","bmp")

Function getFolders(f)
  temp = "<form action=""test.asp"" method=""post"">"&vbCrLf
  temp = temp & "<select name=""folder"" size=""1"" onchange=""this.form.submit();"">"&vbCrLf
  temp = temp & getFolderOptions(f)
  temp = temp & "</select>"&vbCrLf
  temp = temp & "</form>"&vbCrLf
  getFolders = temp
End Function

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
%>

<img id="pict" />
Avatar billede busschou Praktikant
14. juli 2005 - 11:38 #6
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))
Avatar billede bodyguard Nybegynder
14. juli 2005 - 13:42 #7
Oki, men jeg efterlyste jo at jeg skulle kunne vælge hvilken mappe scriptet henter billeder og undermapper fra...

jeg skal nemlig hente data'en fra "../Uploaded/"

:|
Avatar billede busschou Praktikant
14. juli 2005 - 13:47 #8
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)
Avatar billede bodyguard Nybegynder
14. juli 2005 - 14:53 #9
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" ?
Avatar billede busschou Praktikant
14. juli 2005 - 14:58 #10
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

--
path = "D:/blabla/wwwroot/noglesider/nogetandet/denmappedet helestarter fra"
Avatar billede bodyguard Nybegynder
14. juli 2005 - 15:28 #11
OKi... jeg tjekker ligeind med dig senere :)
Avatar billede busschou Praktikant
27. juli 2005 - 15:32 #12
bodygard >> kom du videre? eller glemte jeg at lave noget?, skriv lige, hvis ikke du er kommet videre så må jeg jo lave lidt til dig :o)
Avatar billede bodyguard Nybegynder
05. oktober 2005 - 21:37 #13
Svaret findes her:
http://exp.dk/spm/628202
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