alihassanabadi
چهارشنبه 08 مهر 1388, 12:51 عصر
show uploded image in image control in ASP.NET
این برنامه همراه با کامنت هست البته کامنت توی پروژه هست دانلود کنید
بچه های گل اگه خوب نتونستم بنویسم به بزرگی خودتون ببخشید اخه من این اطلاعات رو از یه سایت خارجی گرفتم و شاید به خاطر اینه که ترجمه کردنم ضعیف
در مواقع زیادی ما با این نیاز برخورد میکنیم که اطلاعات فایل آپلود شده را در گرید ویو یا در دیگر کنترل ها یا نمایش دادن عکس اپلود شده در اییمیج کنترل را نشان دهیم راه های مختلفی برای انجام این کار وجود دارد شما میتوانید این کار را روی کلاینت ساید یا روی سرور ساید انجام دهید
شما میتوانید یک فولدر فیزیکی برای ذخیره فایلها ایجاد کنید یا در یک دیتا بیس یا در استریم
باید همیشه بهترین گزینه را انتخاب کرد.
در این مقاله من تمرکز میکنم بر روی تولید کردن عکس بر روی سرور ساید توسط تبدیل محتوای posted file در باینری فرمت
سپس انرا در سشن ذخیره میکنیم بنابر این میتواند در image.aspxبرای تولید عکس دسترسی شود
دوستان شاید اگه مراحل رو با هم طی کنیم بهتر متوجه موضوع بشیم
خوب مراحل را با هم انجام میدیم
1-یک فرم همراه با یک image control و یک file uplod ویک buttonایجاد کرده و اسم انرا sample.aspxبگذارید
2-یک فرم دیگر با اسم image.aspx ساخته که عکس اپلود شده را تولید و در ایمیج کنترل نمایش میدهد
3- در رویداد کلیک باتون مربوط به سمپل دات ای اس پی ایکس کد زیر را بنویسی
protected void btnupload_Click(object sender, EventArgs e)
{
string imgFileName = "";
if (FileUpload1.FileName.Length == 0)
{
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "Message1", "alert('Provide Image File')", true);
return;
}
else
{
imgFileName = FileUpload1.FileName;
if ((System.IO.Path.GetExtension(imgFileName) == ".jpg") || (System.IO.Path.GetExtension(imgFileName) == ".jpeg") || (System.IO.Path.GetExtension(imgFileName) == ".bmp") || (System.IO.Path.GetExtension(imgFileName) == ".gif") || (System.IO.Path.GetExtension(imgFileName) == ".ico") || (System.IO.Path.GetExtension(imgFileName) == ".png"))
{
byte[] img;
HttpPostedFile postFile =FileUpload1.PostedFile;
int contentLength = postFile.ContentLength;
img = new byte[contentLength];
postFile.InputStream.Read(img, 0, contentLength);
DataTable dtTemp = new DataTable("TempImage");
dtTemp.Columns.Add("Image", System.Type.GetType("System.Byte[]"));
DataRow dr = dtTemp.NewRow();
dr[0] = img;
dtTemp.Rows.Add(dr);
Session["dt"] = dtTemp;
Image1.ImageUrl = "Image.aspx?id=0";
}
else
{
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "Message2", "alert('Provide only Image File'", true);
return;
}
}
}
بعد از نوشتن کد بالا یک تکه کد کوچک هم در پیج لود image.aspx برای تولید عکس مینویسیم
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = (DataTable)Session["dt"];
byte[] b = null;
int id =Convert.ToInt16(Request.QueryString["id"]);
if(dt.Rows.Count > 0)
{
b = ((byte[])dt.Rows[0]["Image"]);
}
if (b != null)
{
Response.ContentType = "image/jpeg";
Response.BinaryWrite(b);
}
}
خلاصه:
در اینجا دیدید که چگونهعکس اپلود شده از کنترل فایل اپلود را تولید کردیم ما از متد
Response.BinaryWrite()
برای این کار استفاده کردیم همچنین شما میتوانید برای تولید عکس از
Response.OutputStream.Write (b, 0, b.Length)
استفاده کنید
به امید اینکه مفید واقع بشه
با تشکر
سعادت دیگران بخش مهمی از خوشبختی ماست.
دست هایی که کمک میکنند مقدس تر از لب هایی هستند که دعا میکنند.کوروش کبیر
این برنامه همراه با کامنت هست البته کامنت توی پروژه هست دانلود کنید
بچه های گل اگه خوب نتونستم بنویسم به بزرگی خودتون ببخشید اخه من این اطلاعات رو از یه سایت خارجی گرفتم و شاید به خاطر اینه که ترجمه کردنم ضعیف
در مواقع زیادی ما با این نیاز برخورد میکنیم که اطلاعات فایل آپلود شده را در گرید ویو یا در دیگر کنترل ها یا نمایش دادن عکس اپلود شده در اییمیج کنترل را نشان دهیم راه های مختلفی برای انجام این کار وجود دارد شما میتوانید این کار را روی کلاینت ساید یا روی سرور ساید انجام دهید
شما میتوانید یک فولدر فیزیکی برای ذخیره فایلها ایجاد کنید یا در یک دیتا بیس یا در استریم
باید همیشه بهترین گزینه را انتخاب کرد.
در این مقاله من تمرکز میکنم بر روی تولید کردن عکس بر روی سرور ساید توسط تبدیل محتوای posted file در باینری فرمت
سپس انرا در سشن ذخیره میکنیم بنابر این میتواند در image.aspxبرای تولید عکس دسترسی شود
دوستان شاید اگه مراحل رو با هم طی کنیم بهتر متوجه موضوع بشیم
خوب مراحل را با هم انجام میدیم
1-یک فرم همراه با یک image control و یک file uplod ویک buttonایجاد کرده و اسم انرا sample.aspxبگذارید
2-یک فرم دیگر با اسم image.aspx ساخته که عکس اپلود شده را تولید و در ایمیج کنترل نمایش میدهد
3- در رویداد کلیک باتون مربوط به سمپل دات ای اس پی ایکس کد زیر را بنویسی
protected void btnupload_Click(object sender, EventArgs e)
{
string imgFileName = "";
if (FileUpload1.FileName.Length == 0)
{
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "Message1", "alert('Provide Image File')", true);
return;
}
else
{
imgFileName = FileUpload1.FileName;
if ((System.IO.Path.GetExtension(imgFileName) == ".jpg") || (System.IO.Path.GetExtension(imgFileName) == ".jpeg") || (System.IO.Path.GetExtension(imgFileName) == ".bmp") || (System.IO.Path.GetExtension(imgFileName) == ".gif") || (System.IO.Path.GetExtension(imgFileName) == ".ico") || (System.IO.Path.GetExtension(imgFileName) == ".png"))
{
byte[] img;
HttpPostedFile postFile =FileUpload1.PostedFile;
int contentLength = postFile.ContentLength;
img = new byte[contentLength];
postFile.InputStream.Read(img, 0, contentLength);
DataTable dtTemp = new DataTable("TempImage");
dtTemp.Columns.Add("Image", System.Type.GetType("System.Byte[]"));
DataRow dr = dtTemp.NewRow();
dr[0] = img;
dtTemp.Rows.Add(dr);
Session["dt"] = dtTemp;
Image1.ImageUrl = "Image.aspx?id=0";
}
else
{
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "Message2", "alert('Provide only Image File'", true);
return;
}
}
}
بعد از نوشتن کد بالا یک تکه کد کوچک هم در پیج لود image.aspx برای تولید عکس مینویسیم
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = (DataTable)Session["dt"];
byte[] b = null;
int id =Convert.ToInt16(Request.QueryString["id"]);
if(dt.Rows.Count > 0)
{
b = ((byte[])dt.Rows[0]["Image"]);
}
if (b != null)
{
Response.ContentType = "image/jpeg";
Response.BinaryWrite(b);
}
}
خلاصه:
در اینجا دیدید که چگونهعکس اپلود شده از کنترل فایل اپلود را تولید کردیم ما از متد
Response.BinaryWrite()
برای این کار استفاده کردیم همچنین شما میتوانید برای تولید عکس از
Response.OutputStream.Write (b, 0, b.Length)
استفاده کنید
به امید اینکه مفید واقع بشه
با تشکر
سعادت دیگران بخش مهمی از خوشبختی ماست.
دست هایی که کمک میکنند مقدس تر از لب هایی هستند که دعا میکنند.کوروش کبیر