PDA

View Full Version : آموزش: نمایش عکس آپلود شده در asp.net همران با توضیح



alihassanabadi
چهارشنبه 08 مهر 1388, 11: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)
استفاده کنید
به امید اینکه مفید واقع بشه
با تشکر
سعادت دیگران بخش مهمی از خوشبختی ماست.


دست هایی که کمک میکنند مقدس تر از لب هایی هستند که دعا میکنند.کوروش کبیر

ahura5s
چهارشنبه 25 خرداد 1390, 09:21 صبح
سپاس از راهنماییت
من تو لود کردن عکس از دیتابیس Linq مشکل داشتم، که با قسمتی از کدی که گذاشته بودی مشکلم حل شد.

saeed31641
جمعه 25 شهریور 1390, 12:12 عصر
بابا ای ول دمت گرم خیلی کمکم کرد مرسی

mahyarx1
دوشنبه 05 تیر 1391, 11:22 صبح
میتونید همین کد رو توی vb.net هم بزارید ؟
ممنون

tarsim
دوشنبه 10 تیر 1392, 15:59 عصر
سلام این کد شما یک مشکلی داره و فقط میشه باهاش تصویر با فرمت jpg رو دید و bmp جواب نمیده آیا راهی هست ؟