<body bgcolor="#FFFFFF" text="#000000"> <p> <% Function ShowFolderList() folderspec = server.mappath("/Images/files/") Set fso = Server.CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(folderspec) Set foldercollection = folder.Files For Each file in foldercollection if lcase(right(file, 4)) = ".jpg" then tmp = tmp & "<a href='#'><img src='/Images/files/"& file.name &"' onClick='skrivsti(this.src)' border='0'></a><BR>" end if Next ShowFolderList = tmp End Function response.write showfolderlist() %> </p> </body> </html>
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Det skal nok passes lidt mere til, men her er det i hvert fald:
<%
'*********************************************************************** '******** Her bestemmer du antal billeder pr. side **************** '*********************************************************************** antalPrSide = 20
on error resume next
Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(Server.MapPath(Mappe))
'linien herunder kan du bruge, hvis du ønsker at anvende en absolut sti 'Set objFolder = objFS.GetFolder(ImageDir)
intPage = CInt(Request.QueryString("Page")) If intPage = 0 Then intPage = 1 End If
For Each Image In objFiles
If InStr(Image.Name,".") Then var=split(Image.Name,".")
if LCase(var(1)) = "png" or LCase(var(1)) = "gif" or LCase(var(1)) = "jpeg" or LCase(var(1)) = "jpg" or LCase(var(1)) = "bmp" or LCase(var(1)) = "tga" Then total = total + 1 End if End if Next
'Get the total number of pages in the subdirectory If (total/antalPrSide) = (int(total/antalPrSide)) Then antalSider = int(total/antalPrSide) Else antalSider = int(total/antalPrSide)+1 End If
Redim arrBilleder(2,total)
'Store picture file names in an array x = 0 For Each objFileItem in objFiles strExt = LCase(Right(objFileItem.Name,4)) If strExt=".gif" OR strExt=".jpg" THEN arrBilleder(0,x) = objFileItem.Name arrBilleder(1,x) = Cstr(int(x/antalPrSide)+1) x = x + 1 End if Next
For x = 0 to UBound(arrBilleder,2)-1 If CInt(arrBilleder(1,x)) = intPage Then ShowPic = Replace(arrBilleder(0,x), " ", "%20") Response.Write "<td align='left' valign='bottom'><a href='#' onClick='skrivsti(this.src)'" Response.Write "<img src='thumbnail.asp?fileName=" & Mappe & arrBilleder(0,x) & "&size=100' alt='" & arrBilleder(0,x) & "' border='0'>" Response.Write "</a></td>" & vbcrlf
PictureNo = PictureNo + 1 If PictureNo=4 Then Response.write "</tr><tr>" PictureNo = 0 End if End If Next
'Determine if there are multiple pages and if so, display page numbers. If antalSider > 1 Then Response.Write "<tr><td colspan='4' align='left'>Side: " For x = 1 to antalSider If x = intPage Then Response.Write x & " " Else Response.Write "<a href='" & curFile & "?Page=" & x & "'>" & x & "</a> " End If Next Response.Write "</td>" End If
Og thumbnail.asp er en ekstern fil, der har genereret thumbs af billederne i mappen. Hvis du vil have den med også, skal du bare sige til - ellers kan du naturligvis bare erstatte
Det ser meget lovende ud :-) Men når jeg rettet stien til, så viser den ingen billeder.
Her der den del som jeg har rettet til:
Set objFS = CreateObject("Scripting.FileSystemObject") ' Set objFolder = objFS.GetFolder(Server.MapPath("files/")) Set objFolder = objFS.GetFolder(Server.MapPath(Mappe))
'linien herunder kan du bruge, hvis du ønsker at anvende en absolut sti Set objFolder = objFS.GetFolder("files/")
Til at sætte objFolder kan du jo bare nøjes med det, du havde før, nemlig server.mappath("/Images/files/") Og så skal du udkommentere den linie til absolut sti (eller rent faktisk anvende en absolut sti...).
Altså:
Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(server.mappath("/Images/files/"))
'linien herunder kan du bruge, hvis du ønsker at anvende en absolut sti 'Set objFolder = objFS.GetFolder("files/")
'*********************************************************************** '******** Her bestemmer du antal billeder pr. side **************** '*********************************************************************** antalPrSide = 3
'on error resume next
Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS.GetFolder(Server.MapPath("files/")) 'Set objFolder = objFS.GetFolder(Server.MapPath(Mappe))
'linien herunder kan du bruge, hvis du ønsker at anvende en absolut sti 'Set objFolder = objFS.GetFolder("files/")
intPage = CInt(Request.QueryString("")) If intPage = 0 Then intPage = 1 End If
For Each Image In objFiles
If InStr(Image.Name,".") Then var=split(Image.Name,".")
if LCase(var(1)) = "png" or LCase(var(1)) = "gif" or LCase(var(1)) = "jpeg" or LCase(var(1)) = "jpg" or LCase(var(1)) = "bmp" or LCase(var(1)) = "tga" Then total = total + 1 End if End if Next
'Get the total number of pages in the subdirectory If (total/antalPrSide) = (int(total/antalPrSide)) Then antalSider = int(total/antalPrSide) Else antalSider = int(total/antalPrSide)+1 End If
Redim arrBilleder(2,total)
'Store picture file names in an array x = 0 For Each objFileItem in objFiles strExt = LCase(Right(objFileItem.Name,4)) If strExt=".gif" OR strExt=".jpg" THEN arrBilleder(0,x) = objFileItem.Name arrBilleder(1,x) = Cstr(int(x/antalPrSide)+1) x = x + 1 End if Next
For x = 0 to UBound(arrBilleder,2)-1 If CInt(arrBilleder(1,x)) = intPage Then ShowPic = Replace(arrBilleder(0,x), " ", "%20") Response.Write "<td align='left' valign='bottom'><a href='#' onClick=""skrivsti(this.src)"">" Response.Write "<img src='" & "files/" & arrBilleder(0,x) & "' alt='" & arrBilleder(0,x) & "' border='0'>" Response.Write "</a></td>" & vbcrlf
PictureNo = PictureNo + 1 If PictureNo=4 Then Response.write "</tr><tr>" PictureNo = 0 End if End If Next
'Determine if there are multiple pages and if so, display page numbers. If antalSider > 1 Then Response.Write "<tr><td colspan='4' align='left'>Side: " For x = 1 to antalSider If x = intPage Then Response.Write x & " " Else 'Response.Write "<a href='" & curFile & "?Page=" & x & "'>" & x & "</a> " Response.Write "<a href='?Page=" & x & "'>" & x & "</a> " End If Next Response.Write "</td>" End If
if ImageHeight < size then Set Image = Server.CreateObject("AspImage.Image") Image.LoadImage server.MapPath(FileName) Image.ImageFormat = 1 Image.JPEGQuality = 80 Response.BinaryWrite Image.Image Set Image = Nothing Set objImg = Nothing end if
Der kan ikke udskrives html eller noget fra denne fil, og den skal ligge som ekstern fil, altså ikke inkluderes. Du kalder den som i mit eksempel, således at den er src og får filename og size fra querystring'en. Den kan vist ikke lave billederne bredere end 300 (eller var det 400?), men det kan du jo lige prøve ad, hvis det bliver nødvendigt.
Stien skal selvfølgelig også være en del af filename - og du må nok hellere sikre dig, at der ikke bliver blandet / og \ - kør evt. en replace. Nu ved jeg ikke hvor du er hostet, men nogle steder skal det være en absolut sti til billedmappen. Hvis det skal det, må du lige indføre en variabel, f.eks. sti, med den absolutte sti. Så skal stien ikke med via querystring'en, og så skal du skifte
Og det virker, når du ikke kalder thumbnail.asp, ikke sandt? Hvis det var fordi du fik angivet den forkerte sti, burde den vise et broken image... Prøv at fjerne on error resume next og se hvad der sker.
Her er den linie som udskriver billede linket: Response.Write "<img src='thumbnail.asp?fileName=" & """files/" & arrBilleder(0,x) & """&size=100' alt='" & arrBilleder(0,x) & "' border='0'>"
Ok, hvis du prøver at højreklikke på de broken images og vælge egenskaber, så kan du se den querystring, der bliver sendt til thumbnail.asp - og den er noget sludder. Skift den linie som udskriver billedlinket ud med dette her:
Det kommer an på, hvad du bruger i thumbnail.asp. Hvis du bruger server.MapPath som i det eksempel jeg har postet her, så skal du bruge den relative sti og den skal sendes med via querystring, som du gør det lige nu. Hvis det ikke virker, så prøv at bruge en absolut sti, altså den komplette sti, som f.eks. d:\web\dotdk.dk\images\files\ - eller hvad den nu er... Hvis det ligger på din egen server, ja så skulle det være let nok. Men hvis ikke, og du ikke kender den, så kan du sikkert finde den på din udbyders site under support eller noget. Den absolutte sti skal ikke sendes med i querystring'en - den skal bare stå i en variabel inde i thumbnail.asp, som du passende kan kalde "sti". Og så skal den relative sti jo så selvfølgelig heller ikke sendes med via querystring'en.
Det vil altså sige at du skal udskrive linket til billedet sådan her:
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.