Moskus Skrevet 11. juni 2008 Del Skrevet 11. juni 2008 Hei og hallo! Jeg er ikke særlig god på webprogrammering, og det bittelille jeg kan er kun ASP.net (og da i VB, ikke sant Manfred ). Men akkurat på denne webserveren er asp.net litt for treigt, så jeg ønsker å benytte ASP (lang historie, den hopper vi over). Og jeg har prøvd å google meg frem til en løsning, men det var dessverre ikke altfor lett... Problemstilling: Jeg har en mappe hvor det blir lagt noen bilder. Disse vil jeg vise i en nettside "fortløpende" og med et visst mellomrom mellom hvert bilde (typisk en tab). Bildene skal være sortert på filnavn (formatet er "YYYYMMDD_HHMM.jpg") og det er en fordel om jeg kan få de nyeste bildene først. Noen som har noen gode tips? På forhånd takk for hjelpen! Lenke til kommentar
brgr Skrevet 11. juni 2008 Del Skrevet 11. juni 2008 (endret) Hei ja. Sjekk ut http://home.no.net/biodland/skript.php?bilde Kanskje det er noe det du vil ha? Det er ihvertfall noe i den retningen for hvordan du kan gjøre det.. Liten demo: http://bearhug.is-a-geek.com/codes/bilde_asp/bilde.asp Endret 11. juni 2008 av brgr Lenke til kommentar
Moskus Skrevet 11. juni 2008 Forfatter Del Skrevet 11. juni 2008 Takk for svar. Etter en liten justering (fjernet en if som tydeligvis skapte problemer) får jeg følgende (mer fatal) feil: Script error: Object doesn't support this property or method: 'Server.CreateObject'set sf = Server.CreateObject("Scripting.FileSystemObject") set fo = sf.GetFolder(Server.MapPath(mappe)) Lenke til kommentar
Moskus Skrevet 11. juni 2008 Forfatter Del Skrevet 11. juni 2008 (endret) Never mind... erstattet Server.CreateObject med bare CreateObject så gikk det fint. Men nå står jeg fast på set fo = sf.GetFolder(server.MapPath(mappe)) Bildene ligger i /images/doorcam/ men får "Path not found" uansett... EDIT: Local path måtte til, men nå fungerer det! Endret 11. juni 2008 av Moskus Lenke til kommentar
brgr Skrevet 11. juni 2008 Del Skrevet 11. juni 2008 hehe... Det er godt du finner utav det. Må si jeg satte det opp på min server på 1-2-3 out of the box omtrent, endret på en linje... Den linjen hvor det står mappe = "/bilder/" endret jeg til en bilde mappe, så fungerte det.. Lenke til kommentar
Moskus Skrevet 11. juni 2008 Forfatter Del Skrevet 11. juni 2008 (endret) Hehe! Ja, men "skriptet" skulle kjøre på en noe begrenset web-server på serveren min, så jeg regnet nok med at det ikke var så enkelt. Det fungerte forøvrig uten problemer på Apache-serveren min. Uansett, takk for hjelpen! Du skulle ikke tilfeldigvis vite hvordan jeg kunne "snu" listen slik at den sorterte fra å til a? Endret 11. juni 2008 av Moskus Lenke til kommentar
brgr Skrevet 11. juni 2008 Del Skrevet 11. juni 2008 Hm.. Det er nok enklere om du dermed legger dem i en indeksert variabel og sorterer dem da. Ettersom det egentlig ikke blir gjort noen spesiell sortering på bildene nå men bare i rekke følge fra mappen. (vanskelig å forklare) Kan hjelpe deg med det hvis ønskelig.. Men no var det mat..:-) Lenke til kommentar
Moskus Skrevet 11. juni 2008 Forfatter Del Skrevet 11. juni 2008 (endret) Spis du. Koden gjør jo i praksis noe slikt: for each fil in filcollection <img src=fil> next Vil da dette fungere i asp? for i = (filcollection.count - 1) to 0 step -1 <img src=filcollection(i)> next Endret 11. juni 2008 av Moskus Lenke til kommentar
brgr Skrevet 11. juni 2008 Del Skrevet 11. juni 2008 Det va ein spennanes syntaks jeg ikke har sett før... Har holdt på med ASP en god tid, men har aldri vært borte i en slik syntaks..:-\ for i = (filcollection.count - 1) to 0 step -1 <img src=filcollection(i)> next Lenke til kommentar
Moskus Skrevet 12. juni 2008 Forfatter Del Skrevet 12. juni 2008 Strengt tatt så fungerer det fint, men jeg får ikke hente ut noe fra collection'en igjen. Dette (og varianter) er det jeg prøver på: <% set sf = CreateObject("Scripting.FileSystemObject") set fo = sf.GetFolder(Server.MapPath(mappe)).Files For i = fo.Count to 1 step -1 response.write("i = " & i) response.write(fo.Item(i).Name) a = fo.Item(i) <img src=a.Name> Next %> Men den feiler på linja "response.write(fo.Item(i).Name)"... Lenke til kommentar
brgr Skrevet 12. juni 2008 Del Skrevet 12. juni 2008 (endret) Fant en måte du kan gjøre det på.. :-) Dim filArr() ReDim filArr(Fo.Count - 1) x = 0 For Each fil In fo filArr(x) = a x = x + 1 Next For x = UBound(filArr) To 0 Step -1 set fil = sf.GetFile(filArr(x)) 'kode for utput. :-) Next Endret 12. juni 2008 av brgr Lenke til kommentar
Moskus Skrevet 12. juni 2008 Forfatter Del Skrevet 12. juni 2008 (endret) Fant en løsning.... Jeg la dette først, og brukte deretter filer(i) istedenfor a.name Dim i i = fo.Count Dim filer() ReDim filer(i) For each fil in fo filer(i) = fil.Name i = i - 1 Next EDIT: Og derfor refresher man tråder før man poster i dem! Endret 12. juni 2008 av Moskus Lenke til kommentar
brgr Skrevet 12. juni 2008 Del Skrevet 12. juni 2008 Var vel temmlig lik min løsning da. ^^ Lenke til kommentar
brgr Skrevet 12. juni 2008 Del Skrevet 12. juni 2008 (endret) Legger ut ett fint kodeeksempel her jeg. Her er det også lagt inn en sorteringsfunsjon så den sorterer alfabetisk, noe det kan hende den andre ikke gjør etter som den bare henter i den rekkefølgen det er skrevet til mappen. <% Dim folder folder = "../images/" Dim thumbLimit 'limit the width of a thumbLimit = 170 'thumbnail image Dim Sf Set Sf = CreateObject("SCRIPTING.FILESYSTEMOBJECT") Dim Fo Set Fo = Sf.GetFolder(Server.MapPath(folder)) Dim FileCollection Set FileCollection = Fo.Files Dim out() ReDim out(FileCollection.Count - 1) Dim x Sub OrderArr() For a = 0 To UBound(out) For b = 0 To UBound(out) - 1 Dim Buff If out(a) < out(b) Then buff = out(a) out(a) = out(b) out(b) = buff End If Next Next End Sub Sub Get_FolderDetails() Response.Write("Folder: " & Fo.Name & "<br />") Dim siz, ext, extStr ext = 0 siz = Fo.Size Do Until siz < 1024 siz = siz / 1024 ext = ext + 1 Loop If ext = 0 Then extStr = "bytes" If ext = 1 Then extStr = "kilobytes" If ext = 2 Then extStr = "megabytes" If ext = 3 Then extStr = "gigabytes" If ext = 4 Then extStr = "terabytes" Response.Write("Size: " & Round(siz, 2) & " " & extStr & "<br />") ext = 0 siz = Fo.Size / FileCollection.Count Do Until siz < 1024 siz = siz / 1024 ext = ext + 1 Loop If ext = 0 Then extStr = "bytes" If ext = 1 Then extStr = "kilobytes" If ext = 2 Then extStr = "megabytes" If ext = 3 Then extStr = "gigabytes" If ext = 4 Then extStr = "terabytes" Response.Write("Numbers of files: " & FileCollection.Count & "<br />") Response.Write("Average filesize: " & Round(siz, 2) & " " & extStr & "<br />") Response.Write("Folder created: " & Fo.DateCreated & " (" & DateDiff("d", Fo.DateCreated, Date) & " days ago)<br />") Response.Write("Folder last accessed: " & Fo.DateLastAccessed & " (" & DateDiff("d", Fo.DateLastAccessed, Date) & " days ago)<br />") Response.Write("Folder last modified: " & Fo.DateLastModified & " (" & DateDiff("d", Fo.DateLastModified, Date) & " days ago)<br />") End Sub Sub Get_Files(opt) x = 0 For Each File In FileCollection out(x) = File x = x + 1 Next OrderArr If opt = 1 Then For x = 0 To UBound(out) Set File = Sf.GetFile(out(x)) Response.Write("<img src=""" & Folder & File.Name & """ width=""" & thumbLimit & """ alt=""" & File.Name & """ />") Next ElseIf opt = 2 Then For x = UBound(out) To 0 Step -1 Set File = Sf.GetFile(out(x)) Response.Write("<img src=""" & Folder & File.Name & """ width=""" & thumbLimit & """ alt=""" & File.Name & """ />") Next End If End Sub %> <% Get_FolderDetails %> <br /> <% Get_Files 1 %> <br /> <% Get_Files 2 %> Koden kan selvsagt forbedres på flere punkter, dette ble bare satt opp full fart.:-) Endret 12. juni 2008 av brgr Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå