Avatar billede maxa Nybegynder
21. november 2005 - 12:32 Der er 5 kommentarer og
1 løsning

Problemer med at få brugerens browser til at opdatere et billede.

Hej med jer,

Jeg har fået mig et billedredigeringsmodul i ASP til mit CMSystem, hvor brugerne har mulighed for at rette i oploadede billeder. Men jeg har desværre et mindre problem med at få brugernes browsere til løbende at vise de ændringer de foretager sig. Ændringerne sker, selvom de ikke vises, så det må være noget med previewbilledet, der ikke opdateres konstant. 

Hvis brugeren stiller sin browser til at tjekke for nye versioner af siden ved hvert besøg, virker det -men det vil jeg meget gerne undgå at skulle. 

Gem/hent/vis funktionerne er på følgende måde:

GEM:

Image.FileName = server.mappath(strBilledeDir&"/temp/preview"&session("userid")&".jpg")
  if Image.SaveImage then
  else
    response.write image.error
    Response.End
  end if

HENT:

<%if request("preview")="true" then
    Response.Expires = -1
    Set Image = Server.CreateObject("AspImage.Image")
    Image.LoadImage server.mappath(strBilledeDir&"/temp/preview"&session("userid")&".jpg")
    Width    = Image.MaxX
    Height  = Image.MaxY
else
    Set Image = Server.CreateObject("AspImage.Image")
    Image.LoadImage server.mappath(strBilledeDir&"\"&request("folder")&request("filename"))
    Width    = Image.MaxX
    Height  = Image.MaxY
end if%>

OG VIS:

<%if request("preview")="true" then%>
<img galleryimg="yes" border=0 id="myimage" src="<%=strBilledeDir&"/temp/preview"&session("userid")&".jpg"%>">                       
<%Set Image = Server.CreateObject("AspImage.Image")Image.LoadImage server.mappath(strBilledeDir&"/temp/preview"&session("userid")&".jpg")
Width    = Image.MaxX
Height  = Image.MaxY

else

Set Image = Server.CreateObject("AspImage.Image")
Image.LoadImage server.mappath(strBilledeDir&"\"&request("folder")&request("filename"))
Width    = Image.MaxX
Height  = Image.MaxY%>
<img GALLERYIMG="no" border=0 id="myimage" src="<%=strBilledeDir&"/"&request("folder")&strfilename%>">
<%end if%>

Jeg håber der er et lyst hoved som kan gennemskue problemet, for det kniber godt nok for mit vedkommende.

Jeg har forsøgt at skrive Response.Expires = -1 og Response.CacheControl = "no-cache" i håb om at browseren blev tvunget til at genindlæse billedet.

MVH Max
Avatar billede Slettet bruger
21. november 2005 - 12:42 #1
Avatar billede maxa Nybegynder
21. november 2005 - 13:54 #2
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

Tak for dit forslag, det virker desværre ikke. Browseren fatter alligevel ikke billedet er blevet ændret, måske fordi billedet beholder det samme navn. Jeg tror jeg vil forsøge mig med en funktion, som reloader siden, såfremt billedet er blevet ændret.

Max
Avatar billede maxa Nybegynder
21. november 2005 - 15:27 #3
Det fungere heller ikke optimalt. Jeg er stadig interesseret i indlæg, hvis der er nogen som ligger inde med en mulig løsning.

-Max.
Avatar billede dawin_dk Nybegynder
22. november 2005 - 00:10 #4
hey ... klart nemmeste måde er at tinge visningen af billedet til at have en ny URL ... når du viser billedet viser du ikke bare .. image.asp?id=4 .. tilføj en random parameter... image.asp?id=4&cache=234234 .... et hint.. brug data.. tid.. timer .. eller noget andet der ændrer sig hele tiden ... en ny url til at læse billedet = en ny request af billedet.. og dermed de nyeste data...

og iøvrigt.. så bør response.expires = Now()-10 .. f.eks. skulle bruges. .og ik bare -1 .. ik altid det funker... og husk at rydde din internet cache når du ændrer cachen .. din browser gemmer så bare det gamle da det ik udløber.. det er bare i testfasen du skal det ... :)

men de tmed url har altid været et godt trick :)
Avatar billede maxa Nybegynder
22. november 2005 - 00:42 #5
Tak for tricket. Jeg endte med at reloade siden 2 gange, efter en ændring af billedet. Det kunne umiddelbart klare problemet, såfremt browseren stod til automatisk at kontrollere om der var kommet nye sider - og det er vist standart indstillingen. Hvis browseren står til aldrig at tjekke for nye sider, kan den heller ikke finde ud af at sætte den cookie jeg har sat som tjek parameter, og så reloader siden ikke. Jeg tror jeg tager din metode til mig og ændre det ved lejlighed, smid et svar og jeg skal belønne dig... q:o)

-Max.
Avatar billede dawin_dk Nybegynder
22. november 2005 - 11:57 #6
hvis du insisterer ;)
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