تبلیغات
بهترین اطلاعات کامپیوتری
 

upload کردن فایل به سرور در ASP.NET | ASP.net , | علی فیروزجنگ

upload کردن فایل به سرور در ASP.NET

کدهای مربوط به Upload کردن فایل به سرور را باید به دو قسمت تقسیم نمود. قسمت اول شامل کدهایی است که نحوه نمایش در مرورگر را شامل می شوند و اساس آن بر HTML است. و قسمت دوم مربوط به طرف سرور است که شامل کدهایی است که با ASP.NET نوشته می شوند. برنامه زیر حاوی کدهای مربوطه برای انجام این کار به صورات خیلی ساده و ابتدایی می باشد. همانطور که ملاحظه می کنید برخلاف ASP کلاسیک، نیاز به وجود component خاصی نمی باشد و این کار در ASP.NET بصورت خیلی ساده انجام پذیر است.

Upload.aspx:
<HTML>
<HEAD>
<TITLE>Uploading File...</TITLE>
<Script language="vb" runat="server">
sub page_load(s as object,e as EventArgs)
    If Not (MyInputFile.PostedFile Is Nothing) Then
        MyInputFile.PostedFile.SaveAs("c:\filename.ext")
        Response.write("Your File was saved on the server...")
    End If 
end sub
</script>
</HEAD>
<BODY>
    <FORM method="post" encType="multipart/form-data">
        <input id="MyInputFile" type="file" name="MyInputFile" runat="server"> 
        <input type="submit" value="Submit">
    </FORM>
</BODY>
</HTML>

در زیر به شرح و توضیح برنامه بالا می پردازیم:

کدهای مربوط به طرف Client
به دلیل آنکه در این قسمت، ارسال اطلاعات به سرور را داریم، باید کدهای مربوطه درون یک فرم قرار گیرند. اما لازم است که ویژگی encType آن فرم را به صورت زیر مقدار دهی کنیم، زیرا در غیر اینصورت فایل انتخاب شده توسط کاربر به سرور ارسال نخواهد شد:

encType="multipart/form-data"

در HTML کنترلی وجود دارد که وظیفه دریافت نام فایل و ارسال آن به سرور را عهده دار می باشد:

<input id="MyInputFile" type="file" name="MyInputFile" runat="server">

توجه کنید که این کنترل را به صورت یک سرور کنترل در می آوریم تا بتوانیم در ASP.NET از توانایی های آن استفاده نماییم و به همین دلیل ویژگی runat="server" را به کنترل مربوطه اضافه کرده ایم. بنابراین کد مربوط به قسمت Client به صورت زیر خواهد بود:

<body>
<form method="post" encType="multipart/form-data">
<INPUT id="MyInputFile" type="file" name="MyInputFile" runat="server">
<input type="submit" value="Submit">
</form>
</body>

کدهای مربوط به طرف Server
این قسمت کدهایی را شامل می شود که برای ذخیره کردن فایل بر روی سرویس دهنده مورد استفاده قرار می گیرند.همانطور که گفته شد شئ مربوط به دریافت نام فایل را به صورت سرور کنترل قرار دادیم تا بتوانیم از خصوصیات آن در سرور استفاده کنیم (در اینجا نام آنرا MyInputFile درنظر گرفته ایم). یکی از خصوصیات این شئ، شئ PostedFile می باشد که به فایل ارسالی توسط کاربر اشاره می کند. این شئ نیز شامل متدی است که اقدام به ذخیره فایل می کند. بنابراین قبل از ذخیره کردن باید مطمئن شد که آیا شئ PostedFile به چیزی اشاره می کند و یا اینکه تهی است. برای این منظور کد مربوط به ذخیره سازی را در شرط زیر قرار می دهیم:

If Not (MyInputFile.PostedFile Is Nothing) Then

و درصورت صحیح بودن شرط، اقدام به ذخیره سازی می نماییم. متد SaveAs شئ PostedFile دارای پارامتری است که محل و نام فایلی که قرار است بر روی سرور ذخیره شود را مشخص می کند. در انتها نیز پیغامی مبنی بر اینکه فایل با موقیت ذخیره شده است را به کاربر می دهیم.

Response.write("Your File was saved on the server successfuly...")

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

<script language="vb" runat="server">
   sub page_load(s as object,e as EventArgs)
      If Not (MyInputFile.PostedFile Is Nothing) Then
         MyInputFile.PostedFile.SaveAs("c:\filename.ext")
         Response.write("Your File was saved on the server...")
      End If
   end sub
</script>

چند نکته
دیگر خصوصیات شئ PostedFile به صورت زیر است:
ContentLength: به اندازه فایل ارسالی اشاره میکند.
ContentType: MIME فایل ارسالی را مشخص می کند که در تشخیص نوع فایل دریافتی کمک می کند.
(بعضی از انواع رایج
MIME عبارت اند از : text/plain ، image/gif ، image/jpeg ، audio/mpeg ، application/msword ، application/octed-stream ، video/mpeg ، audio/wav و...)
FileName: نام فایل و مسیر آن در کامپیوتر شخص کاربر را معین می کند.(مانند C:\images\personal\myface.jpg)
InputStream: یک شئ stream که به فایل upload شده اشاره می کند و آنرا برای خواندن محتوایش آماده می سازد.

یک نکته مهم
توجه کنید که به طور پیش فرض طول داده های ارسالی در یک request حداکثر 4096 بایت (یا همان 4 kb ) می باشد. بدین معنی که یک فایل ارسالی حداکثر می تواند 4 kb باشد. برای اینکه این مقدار را به مقدار لازم و مورد نیاز افزایش دهید باید در فایل web.config ویا machine.config در قسمت <system.web> در صورتیکه قسمت زیر موجود نیست آنرا اضافه کنید

<httpRuntime maxRequestLength="1000000"/>

ودر صورت وجود مقدار maxRequestLength را به مقدار دلخواه تنظیم کنید. این مقدار بر حسب بایت می باشد. در مثال بالا مقدار ماکزیمم فایل ارسال یک میلیون بایت (حدود 1 MGB) می باشد. به عنوان نمونه یک فایل web.config که فقط نیاز فوق را برآورده سازد به صورت زیر خواهد بود:

Configuration file : web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration >
   <system.web> 
      <httpRuntime maxRequestLength="1000000" /> 
   </system.web>
</configuration>

 


تاریخ ثبت : سه شنبه 15 آذر 1384 ساعت : 11:12 ق.ظ
آشنائی با فرم‌های وب در ASP.NET | ASP.net , | علی فیروزجنگ

آشنائی با فرم‌های وب در ASP.NET

به عنوان یک برنامه نویس ویژوال بیسیک شما می توانید برنامه های تحت اینترنت نیز بنویسید. به طور معمول برنامه نویسان ویژوال بیسیک به سمت ASP که یک تکنولوژی از مایکروسافت است متمایل هستند. دلیل این امر هم شباهت میان VB و VBScript می باشد. بزرگترین ایرادی که ASP کلاسیک دارد نداشتن یک محیط ویژوال مانند فرم‌های معمولی بیسیک است. مایکروسافت با Visual InterDev سعی کرد این کمبود را جبران کند اما چندان موفق نبود. بالاخره در ویژوال بیسیک دات نت ترکیبی از InterDev و ویژوال بیسیک وجود دارد و امکانات فرم‌های ویژوال بیسیک را برای اینترنت نیز فراهم می کند.

Web Form ها یکی از اجزای تکنولوژی ASP.NET است که به برنامه نویس های اکثر زبان ها این امکان را می دهد که یک قالب ویژوال با HTML و یک محیط برنامه‌نویسی تحت سرور با کدهای پیشرفته داشته باشند.

Web From ها در عمل 
بهترین راه برای فراگیری این تکنولوژی یک مثال عملی از آن است. پس از مثال معروف Hello World برای شروع استفاده می کنیم.

آماده سازی محیط
قبل از شروع ابتدا باید نرم‌افزارهای مورد نیاز را از روی لیست زیر نصب کنید. اگر ویژوال استودیو دات نت را به شکل کامل و بر روی ویندوز 2000 یا اکس پی نصب کردید احتیاج به مراحل زیر ندارید. 

·         سیستم عامل شما باید حتما ً از نوع ان تی باشد، ویندوز 2000 (سرور یا Professional)، ویندوز اکس پی Professional و یا ان تی سرور 4.

·         باید NET Framework. بر روی سروری که می خواهید با آن کار انجام دهید یا برنامه شما بر روی آن اجرا خواهد شد نصب شده باشد. اگر ویژوال استودیو دات نت را نصب کرده اید مشکلی در این مرحله ندارید.

·         مایکروسافت توصیه کرده که سیستم فایل هارد دیسک سرور شما بهتر است NTFS باشد، هم به دلیل مسائل امنیتی و هم سرعت بیشتر. 

Hello World
در فرم مخصوص ایجاد یک پروژه جدید ASP.NET Web Application را انتخاب کنید و نام آن را HelloWorld قرار دهید. دقت کنید که مکان ذخیره پروژه http://localhost باشد.

سپس بر روی کلید
OK کلیک کنید تا یک Solution جدید ایجاد گردد. به طور قراردادی ویژوال استودیو یک Web Form با نام WebForm1.aspx ایجاد می کند. دقت کنید که پسوند فایل چه تغییری کرده است.

وقتی بر روی کلید
OK کلیک می کنید چند عمل در پشت صحنه انجام می شود. به غیر از ایجاد کردن یک شاخه در دایرکتوری Visual Studio Projects، ویژوال استودیو یک Web Application نیز در سروری که انتخاب کرده اید ایجاد می کند. بر روی سرور، ویژوال استودیو دات نت:

·         یک دایرکتوری با نام پروژه در شاخه inetpub/wwwroot ایجاد می کند.

·         این دایرکتوری را به عنوان یک IIS Application معرفی کرده و اجازه اجرای Script را بر روی آن می دهد.

·         اگر FrontPage Server Extensions را نصب کرده باشید یک FrontPage Web ایجاد می کند تا با FrontPage هم بتوانید به آن دسترسی داشته باشید.

می توانید همانگونه که با فرم های معمولی ویژوال بیسیک کار می کردید از Web Formی که جلوی شما است استفاده کنید، یعنی به شما امکان استفاده از Toolbox و استفاده از کامپوننت های درون آن بر روی Web Form داده شده است. یک Label را از Toolbox برداشته و بر روی قسمت بالای فرم قرار دهید و خاصیت Text آن را به Hello World تغییر دهید.

برای این مثال تمام کاری که لازم بود انجام شود را انجام دادیم. حالا می توانیم برنامه را اجرا کنیم. قبل از اینکار از
Toolbar و در قسمت Solution Configuration به جای Debug ،Release را انتخاب کنید. حالا بوسیله کلید F5 برنامه را اجرا کنید. اگر هیچ مشکلی در سیستم نباشد باید صفحه مرورگر باز شود و فایل WebForm1.aspx نمایش داده وبر روی آن Hello World نوشته شود.

بر روی صفحه مرورگر کلید سمت راست موس را بزنید و
View Source را انتخاب کنید تا ببینید چه مطالبی در سورس این صفحه آمده است. همانطور که می بینید کدهایی به HTML است که بوسیله فایل aspx در زمان اجرا ایجاد شده است.

همانطور که می بینید یک
HTML Form در این متن دیده می شود در حالی که ما چنین چیزی را اضافه نکرده بودیم، درباره این مساله در ادامه توضیح خواهم داد. Labelی که اضافه کرده بودیم در تگ Span قرار دارد. تگ Span مانند یک Container برای Label ما است و اطلاعات آن را در خود نگهداری می کند. به ویژوال استودیو دات نت باز می گردیم.

همانطور که دیدید
Web Form ها خیلی شبیه فرم های معمولی ویندوز هستند. در Web From جدیدی که می سازیم این خاصیت را بیشتر امتحان می کنیم. در برنامه Hello World که ایجاد کردیم تنها یک Web Form داشتیم: WebForm1.aspx. یک Web Form دیگر می سازیم تا کارهای بیشتری با آن انجام دهیم.

منوی
Project | Add Web Form را انتخاب کنید. در فرمی که باز می شود Web Form را انتخاب کنید و مطمئن شوید که نام آن WebForm2.aspx است. (قبل از این کار ویژوال استودیو را از حالت اجرای برنامه خارج کنید)

بر روی
Open کلیک کنید تا WebForm2.aspx در Solution ایجاد شود. بر روی WebForm2.aspx در Solution Explorer دو بار کلیک کنید تا مطمئن باشید که فرمی که تازه ایجاد کرده اید فعال است. مانند مثال قبلی یک Label بر روی فرم قرار دهید، سپس یک Button در زیر آن قرار دهید و اندازه هر دو را یکسان کنید. بر روی Label کلیک کنید و از پنجره Properties خاصیت ID را انتخاب کنید و آن را به lblText تغییر دهید. سپس بر روی کلید کلیک کنید و ID آن را به btnSubmit تغییر دهید. بر روی کلید یک بار کلیک کنید، سپس کلید Enter را بزنید تا به قسمت نوشتن کد برای این کلید وارد شوید.

در
ASP.NET هر کدام از کنترل ها، کدی در پشت صحنه برای خود دارند. همانطور که مشاهده می کنید یک روال با نام btnSubmit_Click وجود دارد که هنگامی که بر روی کلید کلیک می شود اجرا می شود. کدی که در این روال نوشته شده باشد در سرور اجرا می شود و نه در مرورگر کامپیوتر کاربر. کد زیر را در روال مورد بحث بنویسید:

lblText.Text = "Hello World"


همانطور که مشاهده کردید IntelliSense وارد عمل شده و وقتی بعد از lblText، نقطه را تایپ کردید لیستی از خواص و متد های مربوط به Label را به شما نمایش داد. این خاصیت در InterDev هم وجود دارد ولی در ویژوال استودیو دات نت از امکانات بیشتر و لیست پرمحتواتری برخوردار است.

پنجره کد را ببندید و به قسمت طراحی
Web Form بروید، خاصیت Text کلید را به Submit تغییر دهید. حالا برنامه را امتحان می کنیم. اگر سعی کنید تا برنامه را بوسیله کلید F5 اجرا کنید دوباره WebForm1.aspx نمایش داده خواهد شد، زیرا که این فرم، فرم ابتدایی در پروژه ما است. برای اینکه WebForm2.aspx به فرم ابتدایی تبدیل شود در پنجره Solution Explorer بر روی WebForm2.aspx کلید سمت راست موس را بزنید و سپس Set As Start Page را انتخاب کنید. حالا می توانید برنامه اجرا کنید.

Web Form جدید، WebForm2.aspx در مرورگر اینترنت نمایش داده می شود در حالی که بر روی آن یک Label و یک کلید وجود دارد. بر روی کلید کلیک کنید تا متنی که تایپ کرده بودید در Label نمایش داده شود. همانطور که می بینید برنامه مانند فرم های معمولی ویندوز اجرا می شود.

 

 


تاریخ ثبت : سه شنبه 15 آذر 1384 ساعت : 11:12 ق.ظ
Smart Navigation چیست؟ | ASP.net , | علی فیروزجنگ

Smart Navigation چیست؟

مفهوم Smart Navigation و فواید آن
Smart Navigation یكى از بهترین ابزارهاى جدیدى است كه ASP.NET آنرا عرضه كرده است. این ابزار جدید باعث شده ظاهر برنامه هاى وب و احساسى كه نسبت به آن وجود دارد شباهت بیشترى با برنامه هاى عادى و نوشته شده براى ویندوز پیدا كند.

یكى از موانع بزرگ برنامه هاى تحت وب به معمارى و ساختار HTTP برمى گردد. جاییكه مجبوریم اطلاعات جمع آورى شده در سمت مشترى را به سرور بازگردانیم. به همین دلیل مجبور به رسم مجدد و كامل صفحه اى كه قبلا دیده ایم مى باشیم، كه این نه تنها باعث مى شود یك حالت فلش مانند در این رفت و برگشت و رسم مجدد رخ دهد، بلكه براى صفحه هاى بلند كه براى دیدن تمام صفحه نیازمند بهscrolling هستیم، باعث مى شود كه دیدمان را به اول صفحه انتقال دهد، چیزى كه هم شاید دلخواه ما نباشد و هم اینكه ممكن است باعث سردرگمى كاربر گردد. همچنین این فرآیند باعث تغییر فوكوس كنترل ها و بسیارى از اتفاقات دیگرنیز مى شود.

در برنامه هاى عادى ویندوز ما به طور معمول فقط قسمت هایى از صفحه را به روز مى كنیم كه تغییرى در آن ایجاد شده باشد یا تحت تاثیر چیزى قرار گیرند و این بدون نیاز به تغییر در كل برنامه مى باشد (مثلا فقط یك عضو به listbox ما اضافه مى شود. بدون تغییر و رسم مجدد فرم برنامه).

Smart Navigation یا به عبارتى هدایت هوشمندانه این توانایى موجود در برنامه هاى ویندوز را براى برنامه هاى تحت وب فراهم مى كند! اما قبل از هر چیز باید بدانید كه این ابزار فقط براى IE مى باشد و آن هم نسخه هاى ۵ به بالاتر آن. با این وجود شما مى توانید Smart Navigation را فعال یا غیرفعال سازید، بدون آنكه تاثیرى در برنامه شما بگذارد. حتى اگر شما در پروژه تان مرورگرهاى محتلفى را مدنظر قرار داده باشید، مى توانید Smart Navigation را فعال سازید. در این صورت ASP.NET نوع مرورگر را تشخیص داده و Smart Navigation را فقط براى مرورگرهاى پشتیبانى شده فعال مى سازد.

چهار مورد برجسته اى كه Smart Navigation فراهم مى كند عبارتند از:

• صفحه در میان درخواست ها یك نمایش ممتد را داراست و به عبارتى حالت فلش زدن به خود نمى گیرد.
• موقعیت
Scroll را حفظ مى كند.
• فوكوس عضو دارنده فوكوس را نگه مى دارد.
• آخرین صفحه درون تاریخچه (
History) نگهدارى مى شود.

این ابزار در حالت واقع گرایانه براى برنامه هایى كه ارسال به عقب(!) Postback فراوانى دارند طراحى شده است ولى با توجه به این نكته كه محتواى صفحه نباید زیاد تغییر نكند. احتمالا بنا به دلایل كارایى و نه اینكه در تغییرات زیاد ایرادى بهم بزند - مترجم. شاید یك چیز شگفت آور در مورد این ابزار این باشد كه شما در حقیقت نیاز به نوشتن هیج كد و برنامه اى ندارید.

نحوه استفاده
Smart Navigation درون هدایت كننده صفحه (Page directive : <%@ %>)، براى تنظیم یك صفحه و درون web.config براى تنظیم كل برنامه استفاده مى شود. براى تنظیم در Page Directive به صورت زیر عمل كنید:

<%@ Page SmartNavigation=true %>

و براى تنظیم در web.config از ساختار زیر استفاده نمایید:

<Configuration>
<System.web>
<Pages SmartNavigation=true />
</System.web>
</Configuration>

روش كار اینگونه است كه كل صفحه بدرون یك فریم دورنى مخفى (hidden IFrame) بارگذارى (load) مى شود و سپس فقط قسمت هاى تغییر كرده دوباره رندر(render) مى شوند.

 

 


تاریخ ثبت : پنجشنبه 3 آذر 1384 ساعت : 07:11 ق.ظ
Namespace چیست؟ | ASP.net , | علی فیروزجنگ

Namespace چیست؟

یک نکته مهم که در زمان استفاده از NET Framework. باید به آن توجه داشت آن است که فضانام (namespace یا نامکده) ها در ساختمان برنامه کاربردی قرار دارند. فضانام یک طرح نامگذاری منطقی برای گروه بندی کلاس های مرتبط است. این طرح مانع از آن می شود تا کلاس هایی که برای متدها و خصوصیات از یک شناسه یکسان استفاده می کنند تداخل داشته باشند.

مثلا NET Framework. برای گروه بندی تایپ ها به مقوله های منطقی عملکرد، از قبیل چارچوب برنامه کاربردی ASP.NET، از یک طرح نامگذاری سلسله مراتبی استفاده می کند. ابزارهای طراحی از فضانام ها با هدف تسهیل مرور و ارجاع تایپ ها در برنامه بهره برداری می کنند. مثلا فرض کنید در حال نوشتن کد زیر هستید:

Public Class NewClass
   [Procedures and Functions]
End Class

Public Class NewClass
   [Procedures and Functions]
End Class

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

Namespace One
   Public Class NewClass
      [Procedures and Functions]
   End Class
End Namespace

Namespace Two
   Public Class NewClass
      [Procedures and Functions]
   End Class
End Namespace

در این کد برخوردی بین دو کلاس با نام NewClass وجود ندارد چون هر کدام در یک فضانام جداگانه قرار داده شده است. کلاس اول را می توان با استفاده از ترکیب One.NewClass صدا زد، حال آنکه کلاس دوم را می توان با استفاده از ترکیب Two.NewClass صدا زد.

شما می توانید در فضانام های خود از یک ساختار سلسله مراتبی استفاده کنید. قرار دادن اشیاء مشابه تحت زیرعنوانها در یک فضانام مشترک تشخیص هدف فضانام را آسانتر می کند، و در عین حال باعث می شود برنامه به مراتب شئ گراتر شود.

برای توضیح فضانام می توان ساختار فایل و دایرکتوری (کشو، فولدر) در یک کامپیوتر را در نظر گرفت. در این مثال کلاس ها به مثابه فایل ها و فضانام ها مانند دایرکتوری ها هستند. بدیهی است همانگونه که می توانیم دایرکتوریهای تو در تو داشته باشیم، فضانام ها هم در حالیکه کلاس ها را در خود جای داده اند می توانند بصورت تو در تو باشند.

فضانام ها در ساخت برنامه های کاربردی ASP.NET نقش مهمی ایفا می کنند. خوشبختانه لازم نیست برای همه اشیایی که می توانند به وسیله صفحات ASP.NET مورد استفاده قرار بگیرند سیستم طبقه بندی فضانام ایجاد کنید. مایکروسافت این مساله را برای شما حل کرده است. دو فضانام ریشه، و فضانامهای فرزند آنها را می توان وارد صفحات ASP.NET خود کرد. اولی System نامیده می شود، و دومی Microsoft نام دارد. این فضانامها با جزئیات بیشتر در ادامه مورد بحث قرار گرفته اند.

فضانام System
فضانام
System فضانام اصلی برای ساخت ASP.NET و همه برنامه های کاربردی دیگر مبتنی بر NET Framework. است. هر چیزی که در برنامه کاربردی شما قابل انجام باشد از طریق فضانام System کنترل می شود. به عنوان مثال کنترل آرایه، عملیات ریاضی، و تبدیل نوع داده ها از طریق فضانام System و فضانامهای فرزند آن اداره می شوند. ۹ فضانام پیش فرض (فضانام System و ۸ فرزند آن) وجود دارند که به صورت خودکار به صفحات ASP.NET اضافه می شوند:

• System
• System.ComponentModel.Design
• System.Data
• System.Drawing
• System.Web.SessionState
• System.Web
• System.Web.UI
• System.Web.UI.WebControls
• System.Web.UI.HTMLControls

هشت فضانام (بجز فضانام System) در زمان ساخت Visual Studio.NET یا VS.NET بطور خودکار به صفحات ASP.NET وارد می شوند. این فضانام ها در زیر به اختصار شرح داده شده اند.

System.ComponentModel.Design: دربرگیرنده کلاس هایی است که می توان از آنها برای طراحی پشتیبانی سفارشی اجزا و زمان طراحی و دسترسی به سرویس های تامین شده توسط معماری NET Framework. استفاده کرد.

System.Data: امکان دسترسی به کلاس ها و رابطهایی را فراهم می کند که معماری ADO.NET را برای دسترسی به داده های عمومی تشکیل می دهند.