Я использую элемент управления fileuplaod для загрузки изображений. Для этого я использовал для хранения его в кешепроблема кеша в asp.net с C#
в течение 2 часов в байтовом формате и показывать это изображение с использованием HttpContext в файле .ashx. Для некоторых причин
- это некоторая экономия в кеше, а иногда и нет. Я использую asp.net 2.0 и язык C#.
Мой код для сохранения:
//Name of the Image
string strGuid = Guid.NewGuid().ToString();
byte[] byteImage = new byte[ImageUpload.PostedFile.ContentLength];
//file upload control ID "ImageUpload" and read it and save it in cache.
ImageUpload.PostedFile.InputStream.Read(byteImage, 0, byteImage.Length);
//Saving Byte in the cache
Cache.Add(strGuid, byteImage, null, DateTime.Now.AddDays(2), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
//Saving Image Format in cache
Cache.Add(string.Format("{0}_Type", strGuid), strContentType, null, DateTime.Now.AddDays(2), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
UserImage.ImageUrl = string.Format("~/UserControl/ImageHander.ashx?imgId={0}", strGuid);
Код для рендеринга изображения с использованием .ashx файла:
public void ProcessRequest (HttpContext context)
{
string strImageGuid = context.Request.QueryString["imgId"].ToString();
string strContentTypeID = string.Format("{0}_Type", context.Request.QueryString["imgId"].ToString());
byte[] byteImage =(byte []) context.Cache[strImageGuid];
string strContentType = (string)context.Cache[strContentTypeID];
context.Response.ContentType = strContentType;
context.Response.OutputStream.Write(byteImage, 0, byteImage.Length);
}
Есть ли проблема в сохранении байт изображения в кэше или любой другой лучший способ сделать это?
Спасибо! sanjay pal