آپلود تصاویر در ASP.NET (در فایل فیزیکی و در دیتابیس)

در این مطلب کوتاه آموزشی با نحوه آپلود تصاویر در یک وب سایت مبتنی بر ASP.NET آشنا خواهید شد. در اینجا ما یک برنامه کوچک به زبان سی شارپ می نویسیم که کاربر را قادر می سازد که یک فایل تصویری با پسوند JPG را انتخاب و آپلود کند. در این آموزش فرض بر این است که شما با سی شارپ و مباحث پایه ای دات نت آشنا هستید.
برای این کار ابتدا یک کنترل FileUpload را از Toolbox (موجود در قسمت Standard) به صفحه خود اضافه کنید. یا اینکه کد زیر را در محلی که می خواهید کنترل آپلود فایل نمایش داده شود، قرار دهید.

<asp:FileUpload ID="PicUpload" runat="server" />

قبل از هر چیز فضای نام System.IO را using کنید. حالا کدهای زیر را در روالی که می خواهید عمل آپلود فایل در آن انجام شود قرار دهید. به طور مثال اگر می خواهید وقتی روی دکمه Upload کلیک شد، تصویر کاربر بر روی سرور آپلود شود، این کدها را درون روال Upload_Click قرار دهید.

if (PicUpload.PostedFile != null)
{
HttpPostedFile Pic = PicUpload.PostedFile;
if (Pic.ContentLength == 0)
{
Response.Write("فایل شما هیچ محتوایی ندارد!");
return;

}
if (Path.GetExtension(Pic.FileName).ToLower() != «.jpg»)
{
Response.Write(«پسوند این فایل نامعتبر است.»);
return;
}
byte[] data = new Byte[Pic.ContentLength];
Pic.InputStream.Read(data, 0, Pic.ContentLength);
string SavePath = @»images/»;
FileStream newPic = new FileStream(Server.MapPath(SavePath + Pic.FileName), FileMode.Create);
newPic.Write(data, 0, Pic.ContentLength);
newPic.Close();
}

این کد چطور کار می کند؟

در خط اول ابتدا چک می کنیم که آیا کاربر فایلی را برای آپلود انتخاب کرده است یا خیر. یعنی خاصیت PostedFile اگر برابر null بود به این معنی است که کاربر هیچ فایلی را برای آپلود انتخاب نکرده است پس کدهای زیر آن نباید اجرا شوند. سپس متغیری به نام Pic از نوع HttpPostedFile می سازیم تا بتوانیم اطلاعاتی در مورد فایل انتخابی کاربر بدست آوریم. بعد از آن با یک شرط چک می کنیم که حجم فایل انتخابی کاربر برابر با صفر نباشد. در if بعدی هم چک می کنیم که اگر پسوند فایل برابر jpg نبود یک پیغام خطای مناسب به کاربر نشان بده. بدیهی است که در اینجا می توانید پسوندهای دیگری مثل pdf را چک کنید.

دو خط زیر هم اطلاعات فایل انتخابی توسط کاربر را می خوانند :

byte[] data = new Byte[Pic.ContentLength];
Pic.InputStream.Read(data, 0, Pic.ContentLength);

و خط های زیر نیز عمل ساختن فایل جدید از روی فایل کاربر بر روی سرور (عمل آپلود) را انجام می دهند :

FileStream newPic = new FileStream(Server.MapPath(SavePath + Pic.FileName), FileMode.Create);
newPic.Write(data, 0, Pic.ContentLength);

آپلود تصاویر در یک دیتابیس SQL Server

اگر بخواهید به جای آپلود فایل کاربر روی یک فایل فیزیکی موجود در سرور آن را در یک دیتابیس SQL Server آپلود کنید، می توانید از قطعه کد زیر به جای دو خط بالا استفاده کنید. ابتدا فضاهای نام System.Data و System.Data.SqlClient را using کنید و سپس کد زیر را در جای مناسب قرار دهید.

object objImage = data;
SqlConnection connection = new SqlConnection(connectionString);
string sql_insert = "INSERT INTO tblImage (picture) values (@img)";
SqlCommand command = new SqlCommand(sql_insert, connection);
SqlParameter parameter = new SqlParameter("@img", SqlDbType.Image);
parameter.Value = objImage;
command.Parameters.Add(parameter);
connection.Open();
command.ExecuteNonQuery();
connection.Close();

در کد بالا رشته اتصال دیتابیس خود را به جای connectionString قرار دهید و نام جدول و فیلدهای خود را در متغیر sql_insert بنویسید.

farasun.wordpress.com

پ.ن : این مطلب تقدیم می شود به همکلاسی های عزیز!

if (Path.GetExtension(Pic.FileName).ToLower() != «.jpg»)
{
Response.Write(«پسوند این فایل نامعتبر است.»);
return;
}

Oslo ; پلت فرم مدل سازی مایکروسافت

توسعه بر مبنای *مدل اغلب اشاره به پروسه توسعه ای دارد که مدل هایی از اپلیکیشن ساخته می شود و داده ها به عنوان مشخصات سیستم در نظر گرفته می شوند. برای استفاده از روش توسعه مبتنی بر مدل بایستی یک پروسه توسعه و پلت فرم نرم افزاری در اختیار داشته باشید که قادر باشد تا به شما امکان استفاده از مدل ها (انواع منطقی داده ها و ارتباط ها) به عنوان هسته توسعه اپلیکیشن و پیاده سازی اجزای نرم افزاری بر مبنای مدل، که پیش نیازهای یک نرم افزار بر مبنای مدل را رعایت می کنند، را بدهد. مدل های تعیین شده در طراحی نرم افزار به هنگام پیاده سازی به بخش های مختلف توسعه نسبت داده می شوند. توسعه بر مبنای مدل با دید انتزاعی سعی در پنهان کردن پیچیدگی ها دارد و بیشتر روی تمرکز بر روی اجزای با اهمیت تاکید می کند.

Oslo نسل بعدی پلت فرم توسعه مایکروسافت

محصول جدید مایکروسافت با کد نام «Oslo» قصد دارد تا توسعه دهندگان را در ساخت نرم افزارهای پیچیده و بزرگ مبتنی بر دیتابیس بوسیله ابزارهای مناسب یاری کند. مدل سازی در اینجا یعنی بیشتر مشخصات و تعریف های نرم افزار با داده ها پیاده سازی شوند به طوری که پلت فرم و شما بتوانید هر چه آسانتر با استفاده از یک کوئری به مقصود اصلی خود برسید. تکنولوژی های مایکروسافت چند وقتی است در این مسیر حرکت می کنند، برای نمونه XAML, .NET metadata attribute, COM type libraries همگی روی نوشتن مشخصات به عنوان داده و اجتناب از کد کردن آن ها در سطوح پایین (مثل دستورات IL در دات نت) تاکید دارند. پلت فرم Oslo میخواهد این راه را ادامه دهد.

Microsoft Oslo

اجزای تشکیل دهنده Oslo

پلت فرم مدل سازی Oslo با استفاده از اجزای زیر موارد بالا را در اختیار شما قرار می دهد :

  • ابزار طراحی بصری با کد نام «Quadrant» که به شما در پروسه طراحی قوانین تجاری اپلیکیشن ها کمک می کند. این ابزار با استفاده از شکلک های گرافیکی فلوچارت مانند به شما در طراحی مدل های یک اپلیکیشن کمک می کند.
  • یک زبان مدل سازی به نام «M» که شما بایستی برای توسعه مدل های خود از آن استفاده کنید. زبان M زبانی اعلانی (Declarative) برای کار کردن با داده ها و ساختن مدل هاست. M به برنامه نویسان اجازه می دهد تا ساختار داده های خود را تعریف کنند و کوئری های متناسب با نیاز خود ایجاد کنند.
  • مخزن Oslo که یک دیتابیس SQL Server است و مدل ها را به عنوان اشیاء و نمونه (Instance)های مدل ها را به عنوان سطرهای یک جدول (Table) برای پیاده سازی شمای آن، در SQL Server ذخیره می کند. مدل ها و نمونه هایی از مدل ها به صورت بصری یا با استفاده از M یا هر API دسترسی به SQL دیگری (مثل ADO.NET) ایجاد می شوند.

در هر صورتی که شما داده های مدل ها را ایجاد کنید یا تغییر دهید (با استفاده از ابزار بصری، استفاده از M یا هر API دسترسی به SQL)، تمام اطلاعات مدل سازی در یک دیتابیس رابطه ای (Ralational Database) که به آن Oslo Repository گفته می شود، در هنگام اجرا (Runtime) در دسترس اند.

شرکت مایکروسافت فعلاً قصد ارائه Oslo را به عنوان بخشی از ویندوز یا دات نت فریم ورک ندارد. این شرکت نسخه CTP پلت فرم مدل سازی Oslo را برای دانلود عمومی روی سایت خود قرار داده است که می توانید از اینجا SDK آن را دریافت کنید. مدل سازی چند وقتی است در کانون توجه مایکروسافت قرار گرفته و آنچه مسلم است در آینده ای نه چندان دور در مورد Oslo بیشتر خواهیم شنید.

ویدئوی بررسی Oslo

در ویدئوی زیر Paul Vick که چندی قبل در تیم طراحی زبان Visual Basic مایکروسافت همکاری میکرده است، و حالا بر روی زبان مدل سازی M و پلت فرم Oslo کار می کند، در مورد Oslo اطلاعات خوبی به شما خواهد داد. در این ویدئو آقای Vick در مورد پلت فرم Oslo و اهداف آن، زبان مدل سازی M، ابزار Quadrant و مخزن رابطه ای Oslo صحبت می کند. توصیه می کنم برای تکمیل این مطلب ویدئوی زیر را حتماً مشاهده کنید.


*مدل : در معنای عام، مدل نمایش انتزاعی از یک آیتم یا مفهوم است (مانند یک ماشین یا یک ساختمان). به طور مثال یک آرشیتکت ساختمان ابتدا مدل ساختمانی که قرار است بسازد را روی کاغد پیاده سازی می کند و نیازی به استفاده از بیل و کلنگ در ابتدای کار ندارد. در دنیای نرم افزار هم Model برای همین منظور به کار می رود، یعنی مدل سازی مشخصات نرم افزار قبل از پیاده سازی آن ها.

سایت رسمی Oslo

برای تکمیل مطلب و مشاهده مثال عملی می توانید مطالب آموزشی آقای وحید نصیری در مورد Oslo و زبان M را در اینجا مطالعه کنید.