:Francis: Skrevet 11. januar 2010 Del Skrevet 11. januar 2010 Jeg laster et bilde inn i minne, lagrer det i tempmappa og vil vise det dynamisk på siden. Jeg har dette i aspx: <img src="PreviewImageQualityHandler.ashx" alt="Picture not loaded" runat="server" id="imagePreview" /> Koden for å laste opp bildet og legge unik id i Session: protected void uploadButton_Click(object sender, EventArgs e) { try { if (FileUploadControl.FileName.EndsWith(".jpg") || FileUploadControl.FileName.EndsWith(".jpeg")) { string tempFileName = Path.GetTempFileName(); FileUploadControl.SaveAs(tempFileName); Session["tempName"] = tempFileName; Response.Write(Session["tempName"]); fileName = FileUploadControl.FileName; } else { Response.Write("<script>alert('Please select an image to upload')</script>"); } } } Webhandler koden: public class PreviewImageQualityHandler : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { try { if (context.Session.Count > 0) { string sessID = context.Session["tempName"].ToString(); Bitmap bmp = (Bitmap)System.Drawing.Image.FromFile(sessID); context.Response.ContentType = "image/jpg"; MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Bmp); byte[] b = ms.ToArray(); context.Response.OutputStream.Write(b, 0, b.Length); } } catch(Exception ex) { } } public bool IsReusable { get { return false; } } } Webhandleren gjør det den skal når den kjøres, problemet er bare at den kun kjøres første gang jeg laster opp et bilde, eller ved å refreshe siden. Fjerner jeg alt som har med Session å gjøre, kjøres webhandleren ved hver postback, akkurat som jeg ønsker. Er det noen som vet hvorfor handleren ikke kjører på postback når jeg bruker Session? Setter stor pris på alt av innspill! Mvh Francis Lenke til kommentar
:Francis: Skrevet 11. januar 2010 Forfatter Del Skrevet 11. januar 2010 Jeg har løst problemet. Grunnen til at webhandleren ikke fyrer er fordi browseren cacher bildet. Siden URLen til bildet er lik hele tiden, skjønner ikke browseren at det er et nytt bilde som ligger klart til visning. Jeg løste det det slik: imagePreview.Src = "PreviewImageQualityHandler.ashx" + "?x=" + DateTime.Now; På denne måten blir bildet oppdatert når jeg trykker på knappen for å laste det opp. http://stackoverflow.com/questions/2042017...ing-on-postback Mvh Francis Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå