Avatar billede Slettet bruger
26. oktober 2004 - 01:17 Der er 14 kommentarer og
1 løsning

Hvordan gør man dog dette?

Hej eksperter
Jeg har et spørgsmål som er noget kompliceret, men jeg tror det kan lade sig gøre... Kan man ikke lave et ASP-script som bare skal vise et billede man klikker på ved hjælp af en "QueryString"?
Altså jeg har et billedgalleri, og så vil jeg gerne hvis man kunne lave det sådan at alle linksne til billederne i stort format i billedgalleriet for eksempel linger sådan her:
"viewpicture.asp?http://adresse.dk/billede1.jpg"
Altså hvor "viewpicture.asp"- filen skal hente adressen på billedet på denne måde og så derefter lave en response der for eksempel kunne se sådan der ud:
Response.Write "<img src=" & picture & ">"
Eller noget i den dur.
Men hvordan gør man dette uden at man skal have nogen database??? Det eneste "viewpicture.asp"- filen skal gøre er at smide "QueryString´en" ned i sin "Response.Write"...

Håber nogen ved hvordan man gør, hvis det kan lade sig gøre.

Med venlig hilsen

Dan
Avatar billede stoffer Nybegynder
26. oktober 2004 - 02:42 #1
når du sender querystringen videre skal du bruge

<a href="viewpicture.asp?url=<%=urlencode("http://adresse.dk/billede1.jpg")%>">Vis billede</a>

og når du modtager den skal du bruge urldecode

<img src="<=urldecode(request.querystring("url"))%>">
Avatar billede stoffer Nybegynder
26. oktober 2004 - 02:44 #2
hvis det er for basic, har jeg ikke forstået spg. rigtigt. Så må du pensle det mere ud...
Avatar billede Slettet bruger
26. oktober 2004 - 03:13 #3
Hej
Ja, okay jeg skal prøve at udpensle det lidt mere:
Jeg har nogle billedgallerier som fungerer på den som et ASP-script. Jeg skal bare skrive i scriptet hvilken mappe billederne ligger i, så finder den selv billederne og laver dem til miniaturebilleder. Her definerer hvad der skal ske hvis man klikker på billederne. Som det er nu linker miniaturebillederne bare til selve billed filen. Eks: http://adresse/billed1.jpg
Kan man ikke lave det sådan at miniaturebillederne automatisk linker til en side hvor billedet også bliver vist? Eventuelt ved hjælp af en "QuerryString"? Sådan at alle miniaturebillederne linker til samme ASP-fil, men at det er forskelligt hvilke billed der er på siden, alt efter hvilket miniaturebillede man har klikket på.

Et eksempel på et billedgalleri kunne være:

<%
dim image_directory, image_height, image_width, Images_pr_Page, Images_Horizontal
image_directory = "KSL04"
image_height = "65"
image_width = "85"
Images_pr_Page = "16"
Images_Horizontal = "4"

dim count_image, image, Image_Array
Set directory=server.createobject("scripting.filesystemobject")
Set allfiles=directory.getfolder(server.mappath(image_directory))

For each image in allfiles.files
  Image_Array = Image_Array + image.Name & ","

  count_image = count_image +1
Next

dim Current_Page, Total_Pages, Total_Images, Page_Name

Page_Name = request.servervariables("script_name")
Total_Images = count_image

Current_Page  = request.querystring("page")
If Current_Page = "" or Current_Page = "0" then
    Current_Page = "1"
end if

Total_Pages = (Total_Images/Images_pr_Page)

if Total_Pages > int(Total_Pages) then
    Total_Pages = int(Total_Pages) + 1
end if

Image_Array = split(Image_Array,",")

dim First_Image, Last_Image
First_Image = ((Current_Page-1)*(Images_pr_Page))+1
If First_Image =  "0" then
    First_Image = "1"
end if
Last_Image = (Total_Images-First_Image)

if cint(Last_Image) > cint(Images_pr_Page) then
    Last_Image = round(First_Image-1) + round(Images_pr_Page)
else
    Last_Image = (First_Image + Last_Image)
End if

response.write "<table style=""width:100%;"">" & vbCrLf

    dim Count_Image_Prints, td_width
    Count_Image_Prints = 0

    td_width = int(100 / Images_Horizontal)

    dim I
    For I = (First_Image-1) to (Last_Image-1)
        Count_Image_Prints = Count_Image_Prints + 1

        If int(Count_Image_Prints) = int("1") then
            response.write "<tr>" & vbCrLf
        end if

        response.write "<td style=""width:"& td_width &"%;text-align:center;"">" &_
            "<a href="""& image_directory &"/BIG/"& Image_Array(I) &""" target=""main"" onMouseover=""window.status='Åbn dette billede...'; return true;"" onMouseout=""window.status=' ';"">" &_
                "<img src="""& image_directory &"/"& Image_Array(I) &""" border=""0"" style=""border: 1px dotted #C0C0C0"">" &_
            "</a>" &_
        "</td>" & vbCrLf

        If int(Count_Image_Prints) = int(Images_Horizontal) then
            response.write "</tr>" & vbCrLf
            Count_Image_Prints = 0
        end if
    Next

    response.write "</tr>" & vbCrLf &_
    "<tr>" & vbCrLf &_
        "<td colspan="""& Images_Horizontal &""" style=""width:100%;text-align:center;"">" & vbCrLf

        For I = 1 to Total_Pages
            If NOT Cint(Current_Page) = Cint(I) then
                response.write " <a href="""& Page_Name &"?page="& I &""" onMouseover=""window.status='Se flere billeder...'; return true;"" onMouseout=""window.status=' ';"">" &_
                    I &_
                "</a> "
            else
                response.write " ["& I &"] "
            end if
        Next

        response.write "</td>" & vbCrLf &_
    "</tr>" & vbCrLf &_
"</table>" & vbCrLf
%>

Her linker miniaturebillederne direkte til billedet. Kan man ikke lave det sådan at man linker til en side hvor billedet bliver vist?

Hilsen

Dan
Avatar billede phuc69 Juniormester
26. oktober 2004 - 10:14 #4
Her er lille script jeg har lavet
<%
path = ( Server.MapPath ("/billeder") ) 

Set fso = CreateObject("Scripting.FileSystemObject")
Set theCurrentFolder = fso.GetFolder( path )
Set curFiles = theCurrentFolder.files

i=0


For Each fileItem in curFiles

fname = fileItem.Name
fsize = fileItem.Size


if fname<>"Thumbs.db" then
Response.write "<td><a href='/billeder/" & fname & "'><img src='/Pariser/" & fname & "' width='10%' height='10%'></a></td>"


i=i+1
End if
Next
%>
Idén skulle være at du har en mappe med billeder som den så viser som thumbs og hvis du trykker på billedet linker det til et stort
Avatar billede phuc69 Juniormester
26. oktober 2004 - 10:16 #5
Hov sådan her
Response.write "<td><a href='/billeder/" & fname & "'><img src='/billeder/" & fname & "' width='10%'
Avatar billede Slettet bruger
26. oktober 2004 - 12:33 #6
Hej

Jeg er ked af det, men det er ikke helt det jeg beder om...
Jeg beder om en ASP-fil som kan lytte til hvad "querrystringen" er på den forrige side. Sådan at linket til siden for eksempel kunne være: http://adresse.dk/view.asp?billede1.jpg. Eller noget i den retning.
Sådan at det ovenstående billedgalleri som jeg har sat ind kommer til at ligne dette her i responsen:

response.write "<td style=""width:"& td_width &"%;text-align:center;"">" &_
            "<a href=""http://www.adresse.dk/view.asp?"& image_directory &"/BIG/"& Image_Array(I) &" target=""main"" onMouseover=""window.status='Åbn dette billede...'; return true;"" onMouseout=""window.status=' ';"">" &_
                "<img src="""& image_directory &"/"& Image_Array(I) &""" border=""0"" style=""border: 1px dotted #C0C0C0"">" &_
            "</a>" &_
        "</td>" & vbCrLf

Altså sådan at det så sender én videre til en ASP-fil som viser billedet.
Jeg har allerede nu arbejdet lidt med en redirect fil som jeg ikke kan få til at virkre uden database.
Filen ser sådan der ud:
<%@ LANGUAGE="VBSCRIPT"%>
<%Response.Buffer = True%>
<%

strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("../Data/Data.mdb") &";DefaultDir="& Server.MapPath(".") &";DriverId=25;FIL=MS Access;MaxBufferSize=1024;PageTimeout=5"
%>
<%   
   
    'This is the page that redirects you to the link and increments the hit counter.   
       
    Set objConn = Server.CreateObject ("ADODB.Connection")
    Set objRec2 = Server.CreateObject ("ADODB.Recordset")
   
    objConn.Open strconnect
   
    LinkID = Request.QueryString("linkid")
   
    objRec2.Open "Redirection", objConn, 0, 2, 2
   
    objRec2.Filter = "LinkID = " & LinkID
   
    objRec2.Update
    Response.Write(""& objRec2("LinkURL") &"")

    objRec2.Close
    Set objRec2 = Nothing
    objConn.Close
    Set objConn = Nothing
%>

Det eneste denne fil skal gøre er at opsnappe querrystringen og vise indholdet. Uden hjælp fra nogen database. Kan det ikke lade sig gøre at have sådan en fil som bare smider querrystringen direkte ned i sin Response.Write???

Hilsen
Dan
Avatar billede stoffer Nybegynder
26. oktober 2004 - 16:53 #7
Du forvirrer mig en del med det du skriver. Du bliver VED med at skrive linket således:

http://adresse.dk/view.asp?billede1.jpg.

Hvor det skal være således:

http://adresse.dk/view.asp?billedenavn=billede1.jpg.

Er det en slåfejl fra din side eller hvad?
Avatar billede Slettet bruger
26. oktober 2004 - 23:43 #8
Ja, okay det er en slåfejl fra min side af. Det må du undskylde!

linket skal for eksempel se sådan her ud:

http://adresse.dk/view.asp?billedenavn=billede1.jpg

Det må du undskylde, men har du svaret på hvordan man gør???

Hilsen

Dan
Avatar billede Slettet bruger
27. oktober 2004 - 15:04 #9
Hej

Jeg kan også spørge på en anden måde.
Her nedenfor er der et ASP-script som kan åbne en txt-fil, og derefter vise den på siden.
<%
            If Request.QueryString = "" Then
                strTextFile = "forside"
            Else
                strTextFile = Request.QueryString
            End If
            Set objFile = Server.CreateObject("Scripting.FileSystemObject")
            Set objStream = objFile.OpenTextFile(Server.MapPath("ARTICLES\") & "\" & strTextFile & ".txt", 1, True)
            strFilterText = objStream.ReadAll
            strFilterText = Replace(strFilterText,vbcrlf,"<br>")
            Response.Write "<p align='justify'><font face='Arial' size='2' color='#000000'>" & strFilterText & "</font>"
    %>

Her hedder filen viewarticle.asp
Dette vil sige at hvis man vil have åbnet en txt-fil som hedder A1, skal man skrive
http://adresse.dk/viewarticle.asp?A1
Og så åbner den TXT-filen

Kan det ikke lade sig gøre at det bare er et billede ASP-filen skal åbne i stedet for?
Sådan at linket for eksempel er sådan her ud:
http://adresse.dk/viewarticle.asp?billede1.jpg

Hilsen
Dan
Avatar billede stoffer Nybegynder
27. oktober 2004 - 17:10 #10
Jo sagtens. Du skal blot gøre sådan her (ikke testet kode)

dim strImagePath
strImagePath = request.querystring("imgurl")

Response.ContentType = "image/gif"

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open

Set objFilesystem = Server.CreateObject("Scripting.FileSystemObject")
Set objFilestream = objFilesystem.GetFile( strFilename )


  for i = 0 to objStream.size
          i = i + 128000
          Response.BinaryWrite(objStream.Read(128000))
          Response.Flush
    next

    objFilestream.Close
    Set objFilestream = Nothing

Response.BinaryWrite(objRS("Picture"))
Avatar billede stoffer Nybegynder
27. oktober 2004 - 17:11 #11
ups se bort fra: Response.BinaryWrite(objRS("Picture"))
Avatar billede stoffer Nybegynder
27. oktober 2004 - 17:14 #12
Set objFilestream = objFilesystem.GetFile( strFilename )

skal selvf. være

Set objFilestream = objFilesystem.GetFile( strImagePath )

Desuden må du ikke have HTTP i din querystring og du skal bruge server.mappath...
Avatar billede Slettet bruger
27. oktober 2004 - 22:40 #13
Hej

Kan du ikke prøve at skrive mig det fulde ASP-script, med response og det hele. Sådan at jeg bare skal kopiere det ind... Så er de 60 point dine. Hvis dette altså så virker.
For det ovenstående kan jeg ikke få til at virke. Den skriver:

Et objekt er obligatorisk: 'objFilesystem'

Og hvordan skal querrystringen så se ud her. Er dette her for eksempel rigtigt? http://adresse.dk/view.asp?billede1.jpg
Eller skal filformatet ikke med? Sådan at den så ser sådan her ud:
http://adresse.dk/view.asp?billede1
Eller er der en helt tredje måde man skal skrive querrystringen på???

Forstår du jeg er ikke særligt øvet med ASP...

Hilsen
Dan
Avatar billede stoffer Nybegynder
28. oktober 2004 - 13:48 #14
Hej. Querystring er IKKE rigtig

http://adresse.dk/view.asp?billede1.jpg

skal være


http://adresse.dk/view.asp?imgurl=billede1.jpg

Jeg er ikke meget for at give dig en copy paste løsning. For jeg synes altså eksperten er til at lære med...og man lærer ikke noget nyt ved Copy paste....

Lad os tage det one step at the time....

Bruger du option explicit? Så skal du huske at dim'e aller variabler. Husk at der ikke er lavet nogen form for tjek...f.eks. om billedet eksisterer eller ej. det skal også laves.
Avatar billede Slettet bruger
28. oktober 2004 - 15:17 #15
Hej.

Dette er OK med mig...

Querystringen er altså IKKE rigtig!
Den skal være http://adresse.dk/view.asp?imgurl=billede1.jpg

Men jeg er allerede lost når du begynder at skrive om option explicit og dim???

Men jeg vil meget gerne lære hvordan man laver dette her ASP-script...

Hilsen

Dan
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester