Gå til innhold

Anbefalte innlegg

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 :p). 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
Videoannonse
Annonse

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

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 av Moskus
Lenke til kommentar

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

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 av Moskus
Lenke til kommentar

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

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 av Moskus
Lenke til kommentar

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

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

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 av brgr
Lenke til kommentar

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! :D

Endret av Moskus
Lenke til kommentar

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 av brgr
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...