Avatar billede thomasmyg Nybegynder
15. juni 2007 - 17:04 Der er 56 kommentarer og
2 løsninger

FolderExists funktion

Jeg har lavet en FolderExists som ikke helt virker som den skal. Det meningen at den skal søge i en specifik mappe og kun den mappe, den skal ikke søge i mappens undermapper(s) undermapper osv osv.

Lige nu virker den sådan her, jeg har en mappe der hedder hilsoe og i den er der to undermapper og i en af de to mapper har jeg en mappe der hedder test.

Når jeg prøver og lave en søgening på hilsoe kommer følgende resultat "Mappen blev ikke findet!", søger jeg derimod på mappen test så før jeg følgende resultat "Mappen blev fundet!" det er jo ikke iorden.

Her er min kode:

<form name="foldersearch" method="post">
  Sub-domæne: <input type="text" name="folder">
  .hilsoe.dk<input name="path" type="hidden" value=".hilsoe.dk">&nbsp
  <input type="submit" name="submit" value="Søg">
</form>

<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")
  strPath = ""
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch) Then
        Response.Write "Mappen blev fundet!"
    Else
        Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>
Avatar billede mitbrugernavn Praktikant
15. juni 2007 - 17:25 #1
har du en mappe der hedder .hilsoe.dk ???
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 17:35 #2
ja
Avatar billede mitbrugernavn Praktikant
15. juni 2007 - 17:49 #3
prøv
response.write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch

for at se om stien er korrekt.
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:07 #4
det er den ikke, den søg ikke hvor jeg vil have det.
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:09 #5
thomasmyg> Du skal bruge Server.Mappath.

Eksempel:

    If objFSO.FolderExists(Server.Mappath(Request.ServerVariables("APPL_PHYSICAL_PATH") & strSearch )) Then

Hvis .hilsoe.dk ligger i samme mappe, som scriptet, kan du bruge:

Server.Mappath("./" & strSearch)

Hvis det ikke virker med "/", skal du muligvis bruge "\".
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:11 #6
hvor i min kode skal jeg sætte den?
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:16 #7
I IF-sætningen.

Eksempel:

    If objFSO.FolderExists(Server.Mappath("./" & strSearch)) then
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:19 #8
det har jeg gjort nu og så får jeg denne her fejl:

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

Invalid Path

/bestil.asp, line 23

The Path parameter for the MapPath method must be a virtual path. A physical path was used.

22) Set objFSO = CreateObject("Scripting.FileSystemObject")
23) If objFSO.FolderExists(Server.Mappath(Request.ServerVariables("APPL_PHYSICAL_PATH") & strSearch )) Then
24) 'If objFSO.FolderExists(Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch) Then
25) Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:20 #9
Har du prøvet med "\" i stedet for "/", som jeg foreslog i 15/06-2007 19:09:59?

Dvs:

    If objFSO.FolderExists(Server.Mappath(".\" & strSearch)) then
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:21 #10
jeg har prøvet med begge to samme fejl uanset hvad
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:23 #11
Hvad indtaster du i input-feltet "folder"..? :-)
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:23 #12
test
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:23 #13
Og:

Hvordan ser din kode ud nu? -- Dette punkt er også vigtigt! :-)
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:24 #14
<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")
  Server.Mappath("./" & strSearch)
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.Mappath(Request.ServerVariables("APPL_PHYSICAL_PATH") & strSearch )) Then
    'If objFSO.FolderExists(Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch) Then
        Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch
        'Response.Write "Mappen blev fundet!"
        'Else
        'Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:26 #15
Sådan her:

<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")
 
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.Mappath("./" & strSearch)) Then
        Response.Write "Mappen blev fundet!"
    Else
        Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:28 #16
Jeg plejer at check på request_method, i stedet for indholdet af form-elementer..

Dvs:

If Request.Servervariables("request_method") = "POST" Then

' der er submittet.. gør et eller andet..

End If
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:29 #17
nu har jeg samme resultat som da jeg startede mit spørgsmål.
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:30 #18
1) Hvordan ser din mappestruktur ud? Dvs., hvor ligger mapperne og filerne?

2) Hvordan ser din kode ud?

3) Hvilken fejlmelding får du? -- skriv fejlmeldingen som du gjorde i 15/06-2007 19:19:19
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:33 #19
4) I dit spørgsmål skriver du både "hilsoe" og ".hilsoe.dk". Hvilken af dem er korrekt?
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:35 #20
1)
C:\Inetpub\hilsoe.dk\hilsoetest

2)
<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")
 
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.Mappath("./" & strSearch)) Then
        'Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch
        Response.Write "Mappen blev fundet!"
    Else
        Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>

3)
Jeg får ikke noge fejlmeddelse, den søger fint. Men når jeg søger på 'test' som er en undermappe til hilsoetest så kommer beskeden "Mappen blev fundet!", søger jeg på hilsoe.dk får jeg beskeden "Mappen blev ikke fundet!"
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:35 #21
Med hensyn til strukturen, beskrive den som f.eks.:

wwwroot\fil.asp
wwwroot\hilsoe
wwwroot\hilsoe\test
wwwroot\hilsoe\andenmappe

Så kan jeg se hvordan koden skal se ud..
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:36 #22
Er du sikker på, at dine filer og mapper ikke ligger i?:

C:\Inetpub\wwwroot\

Hvor ligger din asp fil?
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:37 #23
mine filer ligger i C:\Inetpub\hilsoe.dk\hilsoetest\bestil.asp
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:39 #24
Så skal du først ud af "hilsoetest", og ud af "hilsoe.dk".. ellers kan du ikke søge på "hilsoe.dk".

Eksempel:

Server.Mappath("../../../" & strSearch)

Ved søgning på "test", skulle søgningen gerne være: C:\Inetpub\test
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:39 #25
Du kunne evt bruge: Server.Mappath("/" & strSearch)
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:40 #26
jeg vil ikke søge i C:\Inetpub\hilsoe.dk\hilsoetest, jeg vil kun søge i C:\Inetpub
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:42 #27
Det her svarer til "C:\Inetpub": Server.Mappath("/")

hvis du vil kigge på noget i "C:\Inetpub", bruger du koden sådan her:

Server.Mappath("/" & "test")

Det vil f.eks. søge på: "C:\Inetpub\test"

Er det ikke det du vil?
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:44 #28
Med andre ord, hvis du vil checke om "C:\Inetpub\test" eksisterer, skal det se sådan ud:

If objFSO.FolderExists(Server.Mappath("/" & "test")) Then

Med variablen/inputtet fra formen:

If objFSO.FolderExists(Server.Mappath("/" & strSearch)) Then
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:47 #29
nej jeg vil søge på mappenavne som ligger i C:\Inetpub og ikke flere led ud.

bruger jeg Server.Mappath("../../../" & strSearch) så får jeg denne her fejl
Server.MapPath() error 'ASP 0175 : 80004005'

Disallowed Path Characters

/bestil.asp, line 23

The '..' characters are not allowed in the Path parameter for the MapPath method.

22) Set objFSO = CreateObject("Scripting.FileSystemObject")
23) If objFSO.FolderExists(Server.Mappath("../../../" & strSearch)) Then
24) 'Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch
25) Response.Write "Mappen blev fundet!"

bruger jeg Server.Mappath("/" & strSearch) så jeg samme resultat som da jeg startede spørgsmålet.
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:47 #30
Din rod-mappe til IIS, er "C:\Inetpub". Normalt bruger man "C:\Inetpub\wwwroot" som rod-mappen.. Det er grunden til at jeg skrev det sådan, i 15/06-2007 19:35:28..
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:48 #31
Læs lige 15/06-2007 19:44:26 igen.. :-)
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:49 #32
jamen, hvad så hvis jeg vil søge på noget andet end test
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:50 #33
Du skal bruge den her:

If objFSO.FolderExists(Server.Mappath("/" & strSearch)) Then

Det andet var bare et eksempel, for at du kunne se, hvordan det virkede..

Hvis du indtaster "hugo" i input-feltet, undersøger den om der findes en mappe, der hedder "hugo", inde i mappen "C:\Inetpub".



Det ER det du vil, ikke?
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:52 #34
ja det er det jeg vil, men det er ikke det den gør, søger jeg på test bliver mappen fundet, søger jeg på hilsoe.dk bliver mappen ikke fundet.
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:52 #35
Hvis du vil undersøge, om "hugo" findes i mappen "hilsoe.dk", som findes i "C:\Inetpub", skal koden se sådan ud:

If objFSO.FolderExists(Server.Mappath("/hilsoe.dk/" & strSearch)) Then
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:55 #36
det vil jeg ikke, jeg vil undersøge om test ligger i C:\inetpub ikke om den ligger i C:\inetpub\hilsoe.dk\hilsoetest\billeder eller c:\inetpub\hilsoe.dk\hilsoeroot osv osv osv
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 19:56 #37
når jeg bruger denne her 'Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch' kan jeg se at der stadig bliver søgt i c:\Inetpub\hilsoe.dk\hilsoetest
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:58 #38
Så burde det være denne linie:

If objFSO.FolderExists(Server.Mappath("/" & strSearch)) Then

Som sagt:

Server.Mappath("/") svarer til "C:\Inetpub".
Når du så tilføjer "test", via input-feltet, bliver det til "C:\Inetpub\test".


1) Er du sikker på, at du ikke har en mappe med navnet "test", ude i "C:\Inetpub" ?

2) En søgning på "hilsoe.dk" burde sige "Mappen blev fundet!", hvis "hilsoe.dk" ligger i "C:\Inetpub", dvs, stien er:

"C:\Inetpub\hilsoe.dk"
Avatar billede thesurfer Nybegynder
15. juni 2007 - 19:58 #39
Du skal *ikke* bruge Request.ServerVariables("APPL_PHYSICAL_PATH")! :-)

Slet den linie.

Du skal bare Server.Mappath.
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:00 #40
ja jeg har ikke en mappe der hedder test i C:\inetpub prøv selv og søg på test på http://hilsoetest.hilsoe.dk
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:02 #41
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:03 #42
Lige nu søgen den i dit subdomæne, kaldet "hilsoetest".

Hvordan ser din kode ud nu?
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:04 #43
det er forde jeg tester på mit subdomæne
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:04 #44
<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")
 
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.Mappath("/" & strSearch)) Then
        Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch
        'Response.Write "Mappen blev fundet!"
    'Else
        'Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:05 #45
Slet linien "Response.Write Request.ServerVariables("APPL_PHYSICAL_PATH")&strSearch" omgående! :-)

Og vis mig din kode, efter du har gjort det... :-)
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:05 #46
<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")
 
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.Mappath("/" & strSearch)) Then
        Response.Write "Mappen blev fundet!"
    Else
        Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:09 #47
Nu tror jeg at jeg har forstået problemet.

Du kalder scriptet fra subdomænet "hilsoetest".

Det gør, at den forstår rod-mappen, som "C:\Inetpub\hilsoe.dk\hilsoetest".

Så jeg vil gætte på, at du har en mappe der hedder test, placeret sådan her:

"C:\Inetpub\hilsoe.dk\hilsoetest\test"


Prøv evt denne kode:



<%
If Request.Form("folder") <> "" Then
  strSearch = Request.Form("folder")


Response.write "<br>Søger i: <b>" & Server.Mappath("/" & strSearch) & "</b>"

 
  'strPath = "...\Inetpub\"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Server.Mappath("/" & strSearch)) Then
        Response.Write "Mappen blev fundet!"
    Else
        Response.Write "Mappen blev ikke fundet!"
    End If
  Set objFSO = Nothing
End If
%>


Jeg følger med på http://hilsoetest.hilsoe.dk/default.asp?side=bestil
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:12 #48
Nu ved jeg snart ikke hvordan jeg skal forklare hvad det er jeg vil. jeg vil IKKE!!!!!!!!!!!!!!!!!! søge i C:\Inetpub\hilsoe.dk\hilsoetest\ jeg vil KUN søge i C:\Inetpub\, det betyder jo at jeg 2 el. 3 nivuaer tilbage af stien
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:13 #49
Prøv det her:

    If objFSO.FolderExists("C:\Inetpub\" & strSearch) Then

Jeg har fjernet Server.Mappath.
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:14 #50
Bingo :-)
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:16 #51
Tror jeg .. :-)

Opdater lige, så jeg kan se resultatet..
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:18 #52
Langt om længe så var den der. Må sgu indrømme at det nogen gang er lidt svært at skulle forklare hvad det er man mener.

Men nu er den der, så det er bare godt.

hvis jeg så må tilføje et tillægsspørgsmål?
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:18 #53
Problemet er som skrevet i 15/06-2007 20:09:02.. :-)

Yes.. smid et tillægsspørgsmål.. :-)

- Svar :-)
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:24 #54
hvordan får jeg mast .hilsoe.dk ind i søgningen så man fx søger på test.hilsoe.dk
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:26 #55
Nemt nok..

Hvis man indtaster "test", og skal have det til at være "test.hilsoe.dk", gør man sådan her:

  strSearch = Request.Form("folder") & ".hilsoe.dk"

Eller:

  strSearch = Request.Form("folder") & ".hilsoe.dk"
  strSearch = strSearch & ".hilsoe.dk"

Så kommer der til at stå "test.hilsoe.dk"..
Avatar billede thomasmyg Nybegynder
15. juni 2007 - 20:52 #56
tak, så kan jeg vist heller ikke presse mere ud af dig. Mange tak for hjælpen
Avatar billede thesurfer Nybegynder
15. juni 2007 - 20:53 #57
Det var så lidt :-)
Avatar billede thomasmyg Nybegynder
01. juli 2007 - 00:19 #58
jeg har lige et tillægs spørgsmål http://www.eksperten.dk/spm/785723
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