PDA

View Full Version : بازیابی عکس ذخیره شده به صورت باینری در پایگاه داده در گریدویو با Entityframework



mohammadreza110
جمعه 22 شهریور 1392, 11:34 صبح
با سلام وخسته نباشید خدمت دوستان من یه مشکلی دارم که عکس رو به صورت باینری در پایگاه ذخیره میکنم ولی برای بازیابی اون هم از Handler استفاده کردم ولی متاسفانه عمل نمیکنه حالا کسی از دوستان هست که یه sample code داشته باشه که چه طوری میشه عکسی که به صورت باینری ذخیره شده رو از پایگاه برگردوند و تو گریدویو نمایش داد؟ البته من اینو به صورت Entityframework میخوام پیادش کنم . ممنون دوستان

General-Xenon
جمعه 22 شهریور 1392, 11:45 صبح
با سلام وخسته نباشید خدمت دوستان من یه مشکلی دارم که عکس رو به صورت باینری در پایگاه ذخیره میکنم ولی برای بازیابی اون هم از Handler استفاده کردم ولی متاسفانه عمل نمیکنه حالا کسی از دوستان هست که یه sample code داشته باشه که چه طوری میشه عکسی که به صورت باینری ذخیره شده رو از پایگاه برگردوند و تو گریدویو نمایش داد؟ البته من اینو به صورت Entityframework میخوام پیادش کنم . ممنون دوستان

سلام کاری نداره که .. کدت رو بزار ببینم چه کردی....

mohammadreza110
جمعه 22 شهریور 1392, 12:17 عصر
این بخش هندلر

[
<%@ WebHandler Language="C#‎‎" Class="ShowImages" %>


using System;
using System.Web;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using buscompanyModel;

public class ShowImages : IHttpHandler

{
buscompanyEntities7 db = new buscompanyEntities7 ();

public void ProcessRequest(HttpContext context)
{
Int32 UserID;

if (context.Request.QueryString["id"] != null)
UserID = Convert.ToInt32(context.Request.QueryString["id"]);
else

throw new ArgumentException("No parameter specified");

context.Response.ContentType = "image/png";

Stream strm = ShowUserImage(UserID);

byte[] buffer = new byte[4096];

int byteSeq = strm.Read(buffer, 0, 4096);


while (byteSeq > 0)
{

context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 4096);

}

}

public Stream ShowUserImage(int UserID)
{

List<int> lst = new List<int>();
buscompanyEntities7 db = new buscompanyEntities7 ();

product sampleprd = db.products.Where(s => s.productCode == UserID).FirstOrDefault();

try
{

return new MemoryStream(sampleprd.productImage);

}

catch
{

return null;

}

}

public bool IsReusable
{

get
{

return false;

}

}

}


اینم دیتابیسم هست

productcode int primarykey
productname nvarchar
productimage varbinary max

حالا نمیدونم این کد هندلر رو چه طوری به گریدویو نسبتش بدم

somayeh_ah
جمعه 22 شهریور 1392, 15:28 عصر
<ItemTemplate>
<a href='ShowImage.ashx?userID=<%# Eval("productcode") %>' >
<img alt='<%# Eval("Name") %>' src='ShowImage.ashx?userID=<%# Eval("productcode") %>'
</a>
</ItemTemplate>

البته تو code behind هم باید grid رو bind کنید

mohammadreza110
شنبه 23 شهریور 1392, 01:36 صبح
<ItemTemplate>
<a href='ShowImage.ashx?userID=<%# Eval("productcode") %>' >
<img alt='<%# Eval("Name") %>' src='ShowImage.ashx?userID=<%# Eval("productcode") %>'
</a>
</ItemTemplate>

البته تو code behind هم باید grid رو bind کنید


بسیار سپاسگزارم مشکلم حل شد

somayeh_ah
شنبه 23 شهریور 1392, 09:25 صبح
خواهش میشود