webForumDet fria alternativet

Bildgalleri i ASP, vill inte visa fullsize-bilden

ASP

11 svar · 481 visningar · startad av markusp80

Medlem sedan juli 20078 inlägg
Frågan#1

Har ett webbgalleri som visar thumbnails i en iframe, som vid klickande ska visa fullformatsbilden i en annan iframe. Fullstorleksbilderna ligger i en mapp, och i denna mapp finns en mapp med namn "thumbs" som innehåller miniatyrbilderna, som har samma namn som motsvarande fullstorleksbild.

Men vid klick på miniatyrbild poppar ett nytt fönster upp där endast nästa och föregående-pilarna visas. Felmeddelandet blir:
-------------------
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument

/new/gallery/showPic.asp, line 40
-------------------

Hela koden för sidan som ska visa fullstorleksbilden:

------------------------------
<!-- #include file ="_global.asp" -->

<HTML>
<head>

<link href="stil_gal.css" rel="stylesheet" type="text/css">

</head>

<body background="bg_gal_win.gif" bgproperties="fixed" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginheight="0" marginwidth="0">

<%

dir = request("dir")
hl = dir

path = server.mapPath(globalDir & dir)

set fs = server.createObject( "Scripting.FileSystemObject" )

set myFolder = fs.getFolder(path)

l = int(request("nr"))

if l = 1 then
ner = ""
else
ner = "<a href=""showPic.asp?dir=" & dir & "&nr=" & l-1 & "&mx=" & request("mx") & """><img src=""prev.gif"" border=""0""></a>"
end if

if l = int(request("mx")) then
upp = ""
else
upp = "<a href=""showPic.asp?dir=" & dir & "&nr=" & l+1 & "&mx=" & request("mx") & """><img src=""next.gif"" border=""0""></a>"
end if

response.write("<table border=0 cellpadding=5 cellspacing=0 align=center><tr>" & vbCrLf)
response.write("<td align=center>" & ner & " " & upp & "</td></tr><tr>" & vbCrLf)

imgname = fs.getFileName(myFolder.files(l))
response.write("<td><img src=" & dir & "/" & imgname & " border=""0""></td>" & vbCrLf)

response.write("</tr></table><br><br>" & vbCrLf)

set fs = nothing
%>
------------------------------

Fullstorleksbilderna ligger alltså på URL:en https://www.markusp.se/new/gallery/mod och thumbsen på URL:en https://www.markusp.se/new/gallery/mod/thumbs. hela testgalleriet ligger på adressen https://www.markusp.se/new/gallery/portfolio_test.asp om nån vill kika.

Är inte alls superskillad på ASP, men det är ju när filnamnet ska hämtas från mappen som det knasar sig har jag räknat ut... Fick höra att getFilename måste ha full sökväg, dvs att man måste använda sig av server.mappath, men inkluderas inte det i path?

I koden
-----------------
myFolder = fs.getFolder(path)
-----------------
är
-----------------
path = server.mapPath(globalDir & dir & "")
-----------------
och globalDir hämtas från _global.asp, där
-----------------
globalDir = "/new/gallery/"
-----------------
och dir i detta fallet är
-----------------
mod
-----------------

Nån som har nån clue? Mkt tacksam för hjälp!
/Markus

Medlem sedan dec. 20025 483 inlägg
#2

Hej och välkommen till wF!

Omslut gärna kod med kodtaggar ([kod]kod här[/kod]) så blir den mer lättläst.

Vilken är rad 40?

Medlem sedan juli 20078 inlägg
#3

Tackar!
Ska köra kod-taggen i fortsättningen... :-)

Rad 40 är

imgname = fs.getFileName(myFolder.files(l))

Är som sagt inte skolad från grunden i ASP, men jag kan ju se logiken i det mesta, förstår ju vad som SKA hända så att säga, varifrån saker o ting hämtas osv, men detta går jag bet på... :-(

Medlem sedan dec. 20025 483 inlägg
#4

Testa att skriva ut

myFolder.files(l)

och se vad du får.

Medlem sedan juli 20078 inlägg
#5

Skrev nu

imgname = myFolder.files(l)

men fick samma felmeddelande,

Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument

/new/gallery/showPic.asp, line 40

dessutom visas bilden i ett nytt fönster och inte i iframen den ska visas i. den är ett annat problem, funkar inte riktigt heller, men det är detta jag skulle vilja lösa i första hand.

Medlem sedan dec. 20025 483 inlägg
#6

Vad får du med

response.write "Path = " & path & "<br>"
if myFolder is nothing then
  response.write "Katalogen finns inte"
else
  response.write "l = " & l & "<br>"
  response.write myFolder.files.count
end if

?

Medlem sedan juli 20078 inlägg
#7

svaret blev, när jag bytte ut rad 40 mot kodsnutten:

Path = D:\webroot\www.markusp.se\new\gallery\mod
l = 3
20

när jag tryckte på bild 3. och det är 20 bilder i mappen, så det stämmer ju...

Medlem sedan dec. 20025 483 inlägg
#8

Se vad följande ger

myFolder.files(l).name
'alternativt
myFolder.files(l).path
Medlem sedan juli 20078 inlägg
#9

Båda alternativen ger

Path = D:\webroot\www.markusp.se\new\gallery\mod
l = 3

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument

/new/gallery/showPic.asp, line 47

när jag skrev

response.write "Path = " & path & "<br>"
if myFolder is nothing then
  response.write "Katalogen finns inte"
else
  response.write "l = " & l & "<br>"
  response.write myFolder.files(l).name ELLER response.write myFolder.files(l).name
end if
Medlem sedan dec. 20025 483 inlägg
#10

Det verkar inte som att det går att indexera i files-samlingen på det viset. Däremot kan du iterera genom samlingen så här

for each file in myFolder.files
  response.write file.name & "<br>"
next
Medlem sedan juli 20078 inlägg
#11

Hmm, det är så skumt för detta sciptet har funkat på en annan sajt, har inte ändrat alls mycket i det...

Aja, hur som helst. Med ovanstående kod så visas ju filnamnen i mappen, men det jag behöver är ju att filnamnet hämtas för den aktuella bilden. Det ska ju kollas av vilket "nr" bilden har, och utifrån det hämta motsvarande filnamn till koden så att rätt bild visas.

Till framåt- och bakåtpilen behövs ju också ett värde på l, om man ska kunna växla bilder framåt och bakåt...

Knepigt detta... :-/

Medlem sedan dec. 20025 483 inlägg
#12

Ovanstående kod var endast ett exempel. Min tanke var att du skulle utgå i från den för att lösa problemet :)

En vidareutveckling

dim counter
counter = 0
for each file in myFolder.files
  if counter = l then
    imgname = file.name
    exit for
  next
next

...
'använd imgname
...

Kan det hjälpa?

273 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)