Avatar billede el_fredo Praktikant
09. juni 2003 - 17:40 Der er 7 kommentarer og
1 løsning

Refresh Image

Jeg har et billede der dynamisk bliver ændret. Det virker fint. Billedet bliver ændret lokalt på serveren. Problemet er imidlertid, at når brugeren får det første billede præsenteret i Image boksen, så gemmes dette billede lokalt på brugerens pc (hvadenten det er på disk eller i RAM ved jeg ikke), og man kan kun få det nye billede at se, ved at trykke på F5 (update). Er der en måde hvorpå jeg kan fremtvinge en opdatering, eller hvad kan jeg gøre for at klienten hele tiden viser det nye billede (checker for opdateringer)...? Et par kodestumper: (bmp=Bitmap objekt, imgGraph=Image, physicalPath=sti til billedet på server, logicalPath=sti til min hjemmeside("http://webserver/")). Det skal lige nævnes, at jeg førhen havde "physicalPath" stående der hvor "logicalPath" står nu. Det bevirkede selvfølgelig, at billedet kun kunne ses når man sad ved serveren, men da kunne billedet fint opdateres. Der skiftede det fint hver gang. Efter ændringen til en URL (http://+sti) virker det kun første gang billedet loades. Derefter er problemet som anført ovenfor... Kode følger herunder:

bmp.Save(physicalPath+@"Graph.gif",ImageFormat.Gif);
imgGraph.ImageUrl = (logicalPath+@"Graph.gif");
Avatar billede el_fredo Praktikant
09. juni 2003 - 17:40 #1
Hvis i vil se hvad det er jeg laver, kan i kigge på:
http://80.196.153.73/StatistikB/StatistikB.aspx
Avatar billede odegaard Nybegynder
09. juni 2003 - 18:16 #2
prøv i page_load eventet at skrive
Response.Expires = 0
Så ved serveren at det bliver forældet med det samme.
Avatar billede odegaard Nybegynder
09. juni 2003 - 18:18 #3
nå nej, du gemmer jo billedet! Lav istedet en aspx-side der returnerer billedet istedet for at gemme det på serveren. Så slipper du også for at hvad der kan ske når to personer benytter det samme script samtidigt.
Avatar billede odegaard Nybegynder
09. juni 2003 - 18:18 #4
Jeg har tidligere skrevet et eksempel på asp.net kategorien om hvordan man gør det. Det kan du jo prøve at finde.
Avatar billede el_fredo Praktikant
09. juni 2003 - 19:04 #5
Jeg kan ikke finde det spørgsmål du snakker om. Er det muligt du kan sende et link? Jeg har prøvet selv at stykke løsningen sammen, men kan ikke helt finde ud af det...
Avatar billede odegaard Nybegynder
10. juni 2003 - 01:00 #6
Gad ikke lige søge efter det, men her er det vigtige...

response.contenttype="image/Png" 
Dim b as New system.drawing.bitmap(width, height, pixelformat.Format16bppRgb555) 

Dim g as graphics = graphics.fromimage(b) 
DrawMyImage(width,height,g) 'funktion der tegner på dit billede

'Png kan ikke streames direkte. Konvertér til memorystrem istedet:
Dim MS as System.IO.MemoryStream = new System.IO.MemoryStream()
b.save(MS, imageformat.Png) 
b.dispose() 

' Send billede til bruger
Dim buffer as byte() = MS.ToArray()
Response.OutputStream.Write(buffer,0,buffer.Length)
Response.End()
Avatar billede el_fredo Praktikant
10. juni 2003 - 18:20 #7
Fint eksempel. Jeg kom bare til at tænke på, at jeg genererer jo mit billede på en anden webform, så billedet ligger allerede på disk. I stedet for, at jeg skal generere billedet på denne ekstra side, som egentligt bare er til for at snyde browseren, kan man så ikke bare på denne side hente billedet op fra disk, og så sende det? Jeg har prøvet, men så løber jeg ind i problemer mht. Bitmap og Graphics. Dem skal jeg jo ikke bruge, men de kræves i koden ovenfor... Kan man ikke på et par linier hive billedet ind fra disk, og så returnere det med Response.xxx??? Jeg har jo alle de data liggende som billedet skal repræsentere på min primære side, og de kan ikke sådan lige uden videre sendes til "snydesiden". Mine data ligger i en ArrayList, og jeg kan jo kun sende strings vha. Request.QueryString. Jeg ved godt, at jeg er lidt besværlig, men jeg er rimeligt noob'et i Webdesign, så du er en stor hjælp. Tak.
Avatar billede odegaard Nybegynder
17. juni 2003 - 12:23 #8
1. Sæt content-type
2. Indlæser filen i en stream
3. Send billede til bruger med Response.OutputStream.Write
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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