24. august 2005 - 09:44Der er
67 kommentarer og 1 løsning
visning af billeder fra mappe - med frem/tilbage knap
Jeg vil gerne vise billeder (enkeltvis) fra en mappe. Ikke med thumbnail - bare frem/tilbage knap. Er der nogen der har lidt kode til det? Så simpelt som muligt...
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Har lige flikket dette script sammen. Det opbygger et array på klienten med navne på de billeder de ligger i folderen (500 max, men det kan du selv lave om). Scriptet timer ud efter 4 minutter, men det kan du ogsp selv lave om :)
dim stiTilDineBilleder: stiTilDineBilleder = "/images/"
sub genArray(path) dim cnt: cnt = 0
set fso = server.createobject("Scripting.FileSystemObject")
path = server.MapPath(path) if right(path,1) <> "\" then path = path + "\" end if
set folder = fso.GetFolder(path)
response.write "var files = [" for each f in folder.files if lcase(right(f.name,3)) = "jpg" then if cnt > 0 then response.write "," end if response.write "'" & f.name & "'" cnt = cnt + 1 end if if cnt > 500 then exit for end if next response.write "];" end sub %> <html> <head> <title>image view</title> <script type="text/javascript"> var idx = 0; <% genArray(stiTilDineBilleder) %>
Hmmm... det lader til at Server.MapPath fungerer på en anden måde på din server end den gør på min...? Kører du IIS på en Windows Server eller er det en anden udgave af asp (f.eks. Chili!ASP?
if instr(path,"\") > 0 then pathSep = "\" elseif instr(path,"/") then pathSep = "/" else ' default til Windows style sti adskiller pathSep = "\" end if
if right(path,1) <> pathSep then path = path + pathSep end if
Jeg har en mistanke om at b-one tilbyder begge servertyper, så det bringer mig ikke nærmere et svar... men prøv lige at indsætte det kode jeg postede til sidst.
...men selvom den slutter med skråstreg (altså ser sådan ud: "/customers/mettesteincke.com/mettesteincke.com/httpd.www/fotos/"), så får du stadig fejlen i linien:
OK, jeg er lidt lost her, for det lader til at FSO ikke accepterer den sti, selvom den ser fin nok ud. Jeg har lige et sidste foreslag inden jeg skal i seriøs tænkeboks, nemlig at undlade det kode som paster en skåstreg efter stien hvis den ikke allerede er der.
Altså prøv at fjerne denne kode (taget fra det oprindelige forslag postet 24/08-2005 11:22:23):
if right(path,1) <> "\" then path = path + "\" end if
Kan du ikke prøve at lave nogle tests (på en "blank" side) hvor du prøve at finde ud af hvilket format på stien man skal bruge sammen med fso.GetFolder for at den vil acceptere det, for jeg har ikke umiddelbart selv adgang til b-one...?
Hvis du finde ud af det, så burde det være overkommeligt at komme videre...
on error resume next set fso = Server.CreateObject("Scripting.FileSystemObject")
response.write("Henter folder / - ") set f = fso.GetFolder(Server.MapPath("/")) if err.number <> 0 then response.write("Fejl i Server.MapPath(""/""): " & err.description & "<br>") err.clear else response.write("OK<br>") end if
response.write("Henter folder . - ") set f = fso.GetFolder(Server.MapPath(".")) if err.number <> 0 then response.write("Fejl i Server.MapPath("".""): " & err.description & "<br>") err.clear else response.write("OK<br>") end if
response.write("Henter folder .. - ") set f = fso.GetFolder(Server.MapPath("..")) if err.number <> 0 then response.write("Fejl i Server.MapPath(""..""): " & err.description & "<br>") err.clear else response.write("OK<br>") end if
response.write("Henter folder ./ - ") set f = fso.GetFolder(Server.MapPath("./")) if err.number <> 0 then response.write("Fejl i Server.MapPath(""./""): " & err.description & "<br>") err.clear else response.write("OK<br>") end if
Ja, men man kunne aldrig vide - det var ikke en af de ting jeg overvejede først... :|
Så har jeg foreløbige afsluttende bemærkninger (dels som svar på dit forrige post, dels som konstatering):
Jeg var interesseret i at teste 1. om den accepterede mappath på root path 2. om den accepterede mappath på current path 3. om den accepterede mappath på parent path 4. om den accepterede mappath på current path med slash (? hmm.. har muligvis været træt... :/) 5. hvilke adresse den kom frem til i de 4 tests
Hvis de stier ligner den første du fik frem, så er der jo nok ikke meget at komme efter der. I dette tilfælde er jeg lidt blank hvad angår virkemåden at fso.GetFolder på en Linux version af Chili!ASP, så det kan være der er en anden som kan hjælpe dig med det - jeg har som sagt ingen erfaring med den platform.
Jeg ved ikke om man kunne få mere information med fso.GetDrive og muligvis skal bruge det sammen med MapPath for at få den fulde sti til det man vil have, men det vil bare blive skud fra min side, så det er du vist ikke særlig tjent med.
Jeg har dog selv fået lidt glæde at ovenstående script (da det fungerer upåklageligt på en IIS), så om ikke for andet... :|
dim stiTilDineBilleder: stiTilDineBilleder = "/images/"
sub genArray(path) dim cnt: cnt = 0
set fso = server.createobject("Scripting.FileSystemObject")
path = server.MapPath(path)
set fldr = fso.GetFolder(path)
response.write "var files = [" for each f in fldr.files if lcase(right(f.name,3)) = "jpg" then if cnt > 0 then response.write "," end if response.write "'" & f.name & "'" cnt = cnt + 1 end if if cnt > 500 then exit for end if next response.write "];" end sub %> <html> <head> <title>image view</title> <script type="text/javascript"> var idx = 0; <% genArray(stiTilDineBilleder) %>
Nej, faktisk skal det være den virtuelle sti du bruger på klienten, fordi den jo ikke skulle kunne få fat i filer der ligger udenfor websitet på din server. Derfor skal den sti der står foran files[idx] være den relative sti, som jeg har forstået i dit tilfælde /premila/fotos/. Det er derfor at stiTilDineBilleder som udgangspunkt er den virtuelle sti og det er fordi FileSystemObject's arbejder med absolutte stier, at den virtuelle sti skal laves om med Server.MapPath på serveren (da Server.MapPath giver den absolutte sti ud fra en virtuel sti).
Det gør der givetvis, men jeg fornemmer at vi er tæt på nu, så kan du ikke lige prøve dette kode inden vi helt giver op (udskift den gamle funktion ved samme navn med denne udgave):
Når jeg rykker koden ind i síne oprindelige omgivelser (hjemmen under konstruktion) viser den ikke det første billede. Man skal trykke frem for at få et billede op. Har du noget idé om hvad det skyldes??
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.