/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Server.MapPath og includefiler
Fra : Allan E


Dato : 16-04-05 17:54

Hej Gruppe.

Så vidt jeg har kunne teste mig frem til returnerer Server.MapPath(), den
absolutte sti udfra den aspfil der er blevet kaldt.
Men hvordan kan jeg finde den absolutte sti udfra en includefils placering.

Ex.
test.asp includerer "includes\paths.asp"
I paths.asp bliver variablen mindb = Server.MapPath("database.mdb")

Når jeg kalder test.asp er "minsti" sat til c:\inetpub\wwwroot\database.mdb
Men hensigten er at minsti skal være
c:\inetpub\wwwroot\includes\database.mdb, da stien skal være relativ til
includefilen "paths.asp".

Hvordan gøres det i asp?

I php ville jeg have gjort noget a la: realpath(dirname(__FILE__) .
"/database.mdb")
Findes der noget ligende i asp?

Mvh Allan E






 
 
Jørn Andersen (16-04-2005)
Kommentar
Fra : Jørn Andersen


Dato : 16-04-05 19:27

On Sat, 16 Apr 2005 18:53:50 +0200, "Allan E" <allan_ege@hotmail.com>
wrote:

Hej Allan,

>Så vidt jeg har kunne teste mig frem til returnerer Server.MapPath(), den
>absolutte sti udfra den aspfil der er blevet kaldt.
>Men hvordan kan jeg finde den absolutte sti udfra en includefils placering.

Det korte svar er, at det kan du ikke. En include regnes som en del af
"hoved-filen" og koden i include'n afvikles, som om det hele var én
fil.

>Ex.
>test.asp includerer "includes\paths.asp"
>I paths.asp bliver variablen mindb = Server.MapPath("database.mdb")
>
>Når jeg kalder test.asp er "minsti" sat til c:\inetpub\wwwroot\database.mdb
>Men hensigten er at minsti skal være
>c:\inetpub\wwwroot\includes\database.mdb, da stien skal være relativ til
>includefilen "paths.asp".

Når du altså ikke kan sætte stien relativt til include'n, må du sætte
den relativt enten
a) til roden - eller
b) til "hoved-filen" - eller
c) sørge for at hovedfilen altid har samme relative forhold til db'en.


a) Hvis det er til roden, bliver det fx:
Server.MapPath("/<sti>/database.mdb")
Ulempen kan være, hvis du tester lokalt på et andet niveau i f.t.
roden end dens endelige placering på serveren ...

b) Hvis det er til hovedfilen, kunne det klares ved at definere en
variabel, fx kaldet strPathAdjust, som default sættes = ""

I include'n definerer du så:
mindbwwwpath = strPathAdjust & "includes/database.mdb"
mindb = Server.MapPath(mindbwwwpath)

I hver "hovedfil" sætter du så strPathAdjust, afhængigt af hvor langt
oppe i fil-hierarkiet hovedfilen befinder sig. Er den fx ét niveau
oppe, skal den være:
strPathAdjust = "../"
Husk den skal defineres *inden* include-sætningen.

Det kan virke lidt kringlet, men hvis du holder tungen lige i munden,
når du kigger på dit fil-system, så er det ret enkelt
NB: Vær lige opmærksom på, om din server accepterer "parent paths" -
der er vist noget med, at de nyeste versioner pr. default ikke gør...

c) En tredje løsning er at sørge for, at hovefilen altid har samme
relative forhold til db'en.
Det kan enten være fordi det er et relativt lille site, hvor alle
asp-filer (der har brug for include'n) er på samme niveau (fx ét
niveau væk fra roden), eller fordi man laver en include-fil til hvert
niveau. Til små sites er det næsten den enkleste løsning.

Håber ét af forslagene kan bringe dig videre

>I php ville jeg have gjort noget a la: realpath(dirname(__FILE__) .
>"/database.mdb")
>Findes der noget ligende i asp?

Jeg kender desværre alt for lidt til PHP!

Good luck,
Jørn

--
Jørn Andersen,
Brønshøj

Johnny Winther Ronne~ (16-04-2005)
Kommentar
Fra : Johnny Winther Ronne~


Dato : 16-04-05 20:28


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:ekk261d6nr1jhqb17c1jidiktj2g7p7jb8@4ax.com...
> On Sat, 16 Apr 2005 18:53:50 +0200, "Allan E" <allan_ege@hotmail.com>
> wrote:
>
> Hej Allan,
>
> >Så vidt jeg har kunne teste mig frem til returnerer Server.MapPath(), den
> >absolutte sti udfra den aspfil der er blevet kaldt.
> >Men hvordan kan jeg finde den absolutte sti udfra en includefils
placering.
>
> Det korte svar er, at det kan du ikke. En include regnes som en del af
> "hoved-filen" og koden i include'n afvikles, som om det hele var én
> fil.
>
> >Ex.
> >test.asp includerer "includes\paths.asp"
> >I paths.asp bliver variablen mindb = Server.MapPath("database.mdb")
> >
> >Når jeg kalder test.asp er "minsti" sat til
c:\inetpub\wwwroot\database.mdb
> >Men hensigten er at minsti skal være
> >c:\inetpub\wwwroot\includes\database.mdb, da stien skal være relativ til
> >includefilen "paths.asp".
>
> Når du altså ikke kan sætte stien relativt til include'n, må du sætte
> den relativt enten
> a) til roden - eller
> b) til "hoved-filen" - eller
> c) sørge for at hovedfilen altid har samme relative forhold til db'en.
>
>
> a) Hvis det er til roden, bliver det fx:
> Server.MapPath("/<sti>/database.mdb")
> Ulempen kan være, hvis du tester lokalt på et andet niveau i f.t.
> roden end dens endelige placering på serveren ...
>
> b) Hvis det er til hovedfilen, kunne det klares ved at definere en
> variabel, fx kaldet strPathAdjust, som default sættes = ""
>
> I include'n definerer du så:
> mindbwwwpath = strPathAdjust & "includes/database.mdb"
> mindb = Server.MapPath(mindbwwwpath)
>
> I hver "hovedfil" sætter du så strPathAdjust, afhængigt af hvor langt
> oppe i fil-hierarkiet hovedfilen befinder sig. Er den fx ét niveau
> oppe, skal den være:
> strPathAdjust = "../"
> Husk den skal defineres *inden* include-sætningen.
>
> Det kan virke lidt kringlet, men hvis du holder tungen lige i munden,
> når du kigger på dit fil-system, så er det ret enkelt
> NB: Vær lige opmærksom på, om din server accepterer "parent paths" -
> der er vist noget med, at de nyeste versioner pr. default ikke gør...
>
> c) En tredje løsning er at sørge for, at hovefilen altid har samme
> relative forhold til db'en.
> Det kan enten være fordi det er et relativt lille site, hvor alle
> asp-filer (der har brug for include'n) er på samme niveau (fx ét
> niveau væk fra roden), eller fordi man laver en include-fil til hvert
> niveau. Til små sites er det næsten den enkleste løsning.
>
> Håber ét af forslagene kan bringe dig videre
>
> >I php ville jeg have gjort noget a la: realpath(dirname(__FILE__) .
> >"/database.mdb")
> >Findes der noget ligende i asp?
>
> Jeg kender desværre alt for lidt til PHP!
>

Rigtigt godt svar, ned i dybden og med udvidelses muligheder.

Med venlig hilsen
Johnny Winther Ronnenberg



Allan E (17-04-2005)
Kommentar
Fra : Allan E


Dato : 17-04-05 23:30

"Jørn Andersen" <jorn@jorna.dk> wrote in message
news:ekk261d6nr1jhqb17c1jidiktj2g7p7jb8@4ax.com...
> On Sat, 16 Apr 2005 18:53:50 +0200, "Allan E" <allan_ege@hotmail.com>
> wrote:

>>Så vidt jeg har kunne teste mig frem til returnerer Server.MapPath(), den
>>absolutte sti udfra den aspfil der er blevet kaldt.
>>Men hvordan kan jeg finde den absolutte sti udfra en includefils
>>placering.
>
> Det korte svar er, at det kan du ikke. En include regnes som en del af
> "hoved-filen" og koden i include'n afvikles, som om det hele var én
> fil.
Hej Jørn, tak for dit svar.

Desværre var det den specifikke funktionalitet jeg var ude efter, og en
løsning som kræver redigering af alle sider som includerer, er jeg ikke vild
med.
1-0 til PHP i denne omgang

Mvh Allan E



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste