آموزش ذخیره عکس در database و نمایش آن در Gridview

alireza_75

Member
ممنونم از راهنمایی های شما
اما خودم راه حلی رو بر مبنای معماری 3 لایه پیدا کردم ک دیدم خوبه اینجا در بارش توضیح بدم.(اجراش کنید خوشتون می یاد)
save image in database
1-برای این کار ابتدا یک gridview برای نمایش اطلاعات در نظر می گیریم و همچنین مثلا یک formview برای گذاشتن upload کردن اطلاعات.
2-جدول product با اطلاعات زیر را در databaseام دارم:
pid int, pname nvchar,picture image
3- برای رعایت معماری 3 لایه یک کلاس به نام product ایجاد می کنم و کد زیر را برای insert کردن و select کردن در آن می نویسیم:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
///
Summary description for product
/// </summary>
///

[System.ComponentModel.DataObject]
public class product
{
public product()
{
//
// TODO: Add constructor logic here
//
}
[System.ComponentModel.
DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select, true)]
public DataSet1.productDataTable selectproduct()
{
DataSet1TableAdapters.
productTableAdapter product = new DataSet1TableAdapters.productTableAdapter();
return product.GetData();
}
[System.ComponentModel.
DataObjectMethod(System.ComponentModel.DataObjectMethodType.Insert, true)]
public int insertproduct(string pname, byte[] picture)
{
DataSet1TableAdapters.
productTableAdapter product = new DataSet1TableAdapters.productTableAdapter();
return product.Insert(pname, picture);
}
public DataSet1.productDataTable selectbyid(int pid)
{
DataSet1TableAdapters.
productTableAdapter product = new DataSet1TableAdapters.productTableAdapter();
return product.selectbyid(pid);
}
}



4-product object رادر TableAdapter Configuration Wizard برای انتخاب datasourse در gridview را انتخاب و سپس متد select را در دامه Wizard کامل می کنم.
5- در formview در قسمت formview tasks قسمت edit template را انتخاب و در قسمت display آن insertitem template را انتخاب می کنیم و سپس textbox جلوی picture را حذف و به جای آن یک fileupload می گذاریم.
6-در iteminserting event آن یعنی formview تابع زیر را قرا می دهیم:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}

protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
{
FileUpload image = (FileUpload)FormView1.FindControl("ImageUpload");
e.Values[
"picture"] = image.FileBytes;

}
}

7-تا اینجا بعد از اجرای برنامه می توانیم database را مقداردهی کنیم مثلا pname =TV , یک عکس دلبخواه خودتون =picture

read image from database
1- فرم دیگری به نام show می سازیم
2-در gridview در قسمت edit columns فیلد picture را حذف و به جای آن imagefilde می گذاریم و سپس در قسمت bound fildeproperty آن مقدار data imageurlfilde را برابر pid و data imageurlformatstring را برابر ~/showimage.aspx?pid={0} قرار می دهیم
3- در متد pageload صفحه show تابع زیر را می نویسیم:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class show : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
product Product = new product();
DataSet1.productDataTable Products =Product.selectbyid(int.Parse(Request.QueryString["pid"]));
DataSet1.productRow prow=Products[0];
Response.BinaryWrite(prow.picture);

}
}
4- با اجرای برنامه می توانید هر عکسی که در database بذارید در gridview ببینید


هر مشکلی داشتید در خدمتم


آموزش ذخیره عکس در database و نمایش آن در


 

جدیدترین ارسال ها

بالا