Note that there are some explanatory texts on larger screens.

plurals
  1. POStoring image in cache
    text
    copied!<p>I have a image handler but it keeps throwing errors</p> <p>I don't know if I am inserting the image wrongly into the cache or retrieveing it the wrong way. I keep getting buffer null if I try to use the stream.</p> <p>any ideas?</p> <pre><code>public void ProcessRequest(HttpContext context) { _imageController = new ImageController(); //Use ImageUrl to request image from external site string imageUrl = CastAide.AsString(context.Request["imageUrl"], String.Empty); //Use imageGuid and pageid to get image from user response upload string imageGuid = CastAide.AsString(context.Request["image"], String.Empty); int pageId = CastAide.AsInt32(context.Request["pageId"], -1); string subFolder = CastAide.AsString(context.Request["sub"], String.Empty); //Use ImageVaultId to return an imageVault Image int imageVaultId = CastAide.AsInt32(context.Request["imageVaultId"], 0); //Width and height determine the image size rendered int width = CastAide.AsInt32(context.Request["width"], 200); int height = CastAide.AsInt32(context.Request["height"], 200); bool resizeNoCrop = CastAide.AsBoolean(context.Request["resizeonly"], false); string cacheKey = ""; Bitmap image = null; // Generate cache key if (!String.IsNullOrEmpty(imageGuid)) cacheKey = String.Format("{0}_{1}", imageGuid, "guid"); else if (!String.IsNullOrEmpty(imageUrl)) cacheKey = String.Format("{0}_{1}", imageUrl, "url"); else if (imageVaultId &gt; 0) cacheKey = String.Format("{0}_{1}", imageVaultId, "vault"); // Load from cache if (context.Cache[cacheKey] != null) { // Load from cache //MemoryStream ms = new MemoryStream((byte[])context.Cache[cacheKey]); //image = (Bitmap)Bitmap.FromStream(ms); image = context.Cache[cacheKey] as Bitmap; } else { if (!String.IsNullOrEmpty(imageGuid)) { // load file from the local file store FileInfo fi; if (!String.IsNullOrEmpty(subFolder)) fi = new FileInfo(_imageController.GetFilePath(subFolder, imageGuid)); else fi = new FileInfo(_imageController.GetFilePath(pageId, imageGuid)); if (fi.Exists) image = (Bitmap) Bitmap.FromFile(fi.FullName); else image = (Bitmap) Bitmap.FromFile(ConfigurationManager.AppSettings["ImageNotFoundPath"]); } else if (!String.IsNullOrEmpty(imageUrl)) { // load file from the internet try { HttpWebRequest request = (HttpWebRequest) WebRequest.Create(imageUrl); WebResponse response = request.GetResponse(); Stream stream = response.GetResponseStream(); image = (Bitmap) Bitmap.FromStream(stream); response.Close(); } catch { image = (Bitmap) Bitmap.FromFile(ConfigurationManager.AppSettings["ImageNotFoundPath"]); } } else if (imageVaultId &gt; 0) { string filePath = ImageVaultUtility.GetSourceFileName(imageVaultId); FileInfo fi = new FileInfo(filePath); if (fi.Exists) image = (Bitmap) Bitmap.FromFile(fi.FullName); else image = (Bitmap) Bitmap.FromFile(ConfigurationManager.AppSettings["ImageNotFoundPath"]); } // Insert image into cache context.Cache.Insert(cacheKey, image, null, DateTime.Now.AddSeconds(10), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null); } if (resizeNoCrop) ImageUtility.ApplyResizeTransform(ref image, width, height, true); else ImageUtility.ApplyCropAndResizeTransform(ref image, width, height); context.Response.Clear(); context.Response.ContentType = "image/jpeg"; image.Save(context.Response.OutputStream, ImageFormat.Jpeg); image.Dispose(); } </code></pre> <p>when retrieving the cache the following is happening:</p> <p><img src="https://i.stack.imgur.com/Buz8f.png" alt="enter image description here"></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload