Avatar billede soda Nybegynder
07. december 2003 - 22:03 Der er 19 kommentarer og
1 løsning

Skjul placering af filer i (HTML) kode

Jeg har i HTML koden på nogle hjemmesider set, at der f.eks står <img src=showpic.asp?rec=13143> i stedet for f.eks <img src=pictures/img193.jpg>.

Hvordan gøres dette ?

Skal man bruge include ? - Det vil jeg umiddelbart mene ikke vil virke.

Nogen forslag??
Avatar billede cdc Novice
07. december 2003 - 22:07 #1
det er asp, og billederne ligger i en mappe eller i en db, hvor man så henter stien fra til det billed som skal bruges
Avatar billede soda Nybegynder
07. december 2003 - 22:11 #2
Jeg er klar over det er fra en database når der står rec=13143, men jeg ville gerne have koden til hvordan man gør.
Avatar billede squashguy Nybegynder
07. december 2003 - 23:27 #3
f.eks.: showpic.asp

<%
pics = Array("1.gif", "2.gif")
id = CInt(Request.QueryString("rec"))
If id < LBound(pics) Or id > UBound(pics) Then Response.End
Response.Redirect(pics(id))
%>

i stedet for arrayet bruger du bare en database..
Avatar billede netro Nybegynder
07. december 2003 - 23:27 #4
F.eks.:

<img src="image.asp?navn=test">

=== image.asp ===

<%
Response.ContentType = "image/jpeg"
Set Stream = Server.CreateObject("ADODB.Stream")
Stream.Type = 1
Stream.Open
Stream.LoadFromFile "c:\mappe\test.jpg"
Contents = Stream.Read
Response.BinaryWrite Contents
Stream.Close
Set Stream = Nothing
%>
Avatar billede soda Nybegynder
08. december 2003 - 10:44 #5
Jeg prøvet, at se på det når jeg kommer hjem i aften. Ser umiddelbart godt ud ;)
Avatar billede squashguy Nybegynder
08. december 2003 - 14:30 #6
Den metode jeg beskriver er dog ikke helt usynlig, da browseren blot bliver redirected.. Netro kører stealth, men denne løsning kan du endda placere dine billeder udenfor wwwroot
Avatar billede soda Nybegynder
08. december 2003 - 19:12 #7
Jeg kan ikke umiddelbart få Netro's kode til, at virke...

I kan se hvad jeg har lavet på http://soda.dk/test/

Der findes en synligkode.asp, som er min kode uden prøve på, at skjule koden.

Og så ligger der usynligkode.asp som er en prøve på, at lave det Netro har beskrevet.

Jeg har dog lavet en lille ændring.

Stream.Open
FilLoc = "./images/" & Request.Querystring("Folder") & "/" & Request.Querystring("File")
Stream.LoadFromFile FileLoc

Det skulle ikke umiddelbart gøre nogen forskel. Jeg har prøvet, at bruge en sti ligesom i Netro's eksempel, men det giver en fejl, om at Explorer ikke kan hente filen på trods af, at den ligger tilgændelig.
Avatar billede netro Nybegynder
08. december 2003 - 19:31 #8
Du har ikke defineret "Stream".

Dim Stream

http://soda.dk/test/image.asp?Folder=billeder2&File=CISCO.JPG
Avatar billede soda Nybegynder
08. december 2003 - 20:54 #9
DOH! - Ja selvfølgelig, men det er ikke det hele.

Nu har jeg fået Dim'et mine variabler. Nu påstår den så filen ikke findes.
Avatar billede netro Nybegynder
08. december 2003 - 21:04 #10
Gør den da det?
Avatar billede soda Nybegynder
08. december 2003 - 21:22 #11
Ja det gør den.

Nu har jeg tilmed skrevet hele stigen fra roden af D: hvor mit domain ligger ind som værende mappen den skal lede i og alligevel viser den ikke billedet.

FullPath = Replace(request.servervariables("path_translated"),"image.asp","images\")
FileLoc = FullPath & Request.Querystring("Folder") & "\" & Request.Querystring("File")

Har måtte lave lidt spaghettikode for, at komme frem til det, men FullPath skulle meget gerne give D:\web\sodadk\wwwroot\test\images\ + Folder "\" + filnavn.

Det kan ikke blive mere direkte til filen end det.
Avatar billede netro Nybegynder
08. december 2003 - 21:35 #12
Du skal ikke skrive stien således. Brug "http://www.domaene.dk/mappe/fil.ext" eller "/mappe/fil.ext" etc.
Avatar billede soda Nybegynder
08. december 2003 - 22:38 #13
Jeg har nu prøvet med "/images/", "./images/" og "http://www.soda.dk/test/images/" og image.asp filen ligger i test/ folderen.

Alle 3 samme resultat. Har du en side, hvor din kode virker, som man kan se i funktion ?

----- image.asp ------

<%@ Language=VBScript %>
<% Option Explicit %>
<%

Dim Stream, FileLoc

Response.ContentType = "image/jpeg"
Set Stream = Server.CreateObject("ADODB.Stream")
Stream.Type = 1
Stream.Open
FileLoc = "http://www.soda.dk/test/images/" & Request.Querystring("Folder") & "/" & Request.Querystring("File")
Stream.LoadFromFile FileLoc
Contents = Stream.Read
Response.BinaryWrite Contents
Stream.Close
Set Stream = Nothing
%>
Avatar billede netro Nybegynder
08. december 2003 - 22:51 #14
Avatar billede soda Nybegynder
09. december 2003 - 09:47 #15
Det kan ikke være fordi jeg ikke bruger en database, men ganske almindelige filer, at det ikke virker ?
Avatar billede netro Nybegynder
09. december 2003 - 12:43 #16
Nej, hvis de kommer fra en database, skal du blot bruge:

Response.ContentType = "image/jpeg"
Response.BinaryWrite objrs("Felt")
Avatar billede soda Nybegynder
09. december 2003 - 16:59 #17
Så forstår jeg slet ikke hvorfor det ikke virker.

Filen, som der refereres til findes. Der er læse rettigheder til filen, men på trods af det, så virker det ikke. Den er testet på mit domain og på min egen IIS Test server.
Avatar billede squashguy Nybegynder
09. december 2003 - 17:06 #18
prøv denne

FileLoc = Server.MapPath("/images/" & Request.Querystring("Folder"))
Avatar billede soda Nybegynder
09. december 2003 - 21:18 #19
Squashguy: Samme resultat. Desvære.
Avatar billede soda Nybegynder
17. marts 2004 - 23:05 #20
Netro: Du får point for dit forsøg. Kan blot ikke få det til, at virke.
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