نمایش نتایج 1 تا 3 از 3

نام تاپیک: آموزشی : ارسال فایل به سرور توسط کاربران

  1. #1

    آموزشی : ارسال فایل به سرور توسط کاربران

    من خودم یک هفته ای میشه که دارم ASP میخونم...هروقت یک چیز جالب یاد گرفتم ... مینویسم که جماعت برنامه نویس هم استفاده کند .... این یکی از همون چیزهاست ...

    در بسیاری از Web Applicationها نیاز به ایجاد امکان Upload فایل به سرور به صورت کنترل شده و بدون نیاز به برقراری دسترسی از طریق FTP و... می باشد. انجام این کار در ASP.NET بسیار ساده است. در این مقاله سعی شده است از دیدگاه کاربردی و نه آزمایشگاهی به این مطلب نگریسته شود. به طوری که کلیه مراحل جهت ذخیره فایل روی Remote Server می باشد و نه Localhost.

    کدنویسی شامل دو قسمت می باشد:
    کدهای مربوط به Presentation Layer و یا همان صفحات aspx. که مورد مشاهده کاربر قرار می گیرد.
    کدهای مربوط به Business Login Layer که همان Code Behind و Handlerهای صفحه می باشند که در این مقاله به زبان VB.NET نوشته شده است.

    برای این کار ابتدا بایستی یک وب فرم درون Application خود ایجاد کرده سپس در درون تگ <form> تگ زیر را اضافه کنید:

    <input id="filename" type="file" runat="server"> 

    ویژگی type="file" نشاندهنده این است که ما با یک فیلد معمولی متنی سر و کار نداریم.

    دو نکته مهمی که باید در اینجا مدنظر قرار گیرند عبارتند از:
    فراموش نکنید که ویژگیهای runat="server" و enctype="multipart/form-data" حتما در تگ <form> تنظیم شوند.
    تگ <input> شما نیز باید خاصیت runat="server" را داشته باشد تا بتوانیم از طریق ASP.NET آن را کنترل کنیم.

    قرار دادن تگ <input> در صفحه شما یک فیلد متنی و یک دکمه ...Browse برای شما ایجاد می کند که با کلیک کردن روی آن پنجره ای جهت انتخاب فایل از روی سخت دیسک شما باز می شود و پس از انتخاب فایل و تایید مقدار Value فیلد متنی با مسیر فایل روی سخت دیسک شما جایگزین می شود.

    حال بایستی فایل انتخاب شده به سرور منتقل شود برای اینکار یک کنترل Button به صفحه اضافه می کنیم که با کلیک کردن روی آن فایل به سرور منتقل شود:

    <asp:Button id="UploadButton" runat="server" Text="Upload" /> 

    در حال حاضر صفحه Presentation آماده است و بایستی در Code Behind صفحه و یا Block Script رویداد کلیک روی دکمه Upload را کنترل نماییم.

    Private Sub UploadButton_Click(ByVal sender As System.Object, ByVal e As
    System.EventArgs) Handles UploadButton.Click
    If Not (filename.PostedFile.FileName.Length = 0) Then
    Dim ServerPath As String = "C:\YourWebSite\YourFolder" &
    Mid(filename.PostedFile.FileName, InStrRev(filename.PostedFile.FileName, "\",
    -1, 1), filename.PostedFile.FileName.Length)
    filename.PostedFile.SaveAs(ServerPath)

    filename.Visible = False
    UploadButton.Visible = False
    lblError.Visible = False
    lblSendMessage.Visible = True
    lblSendMessage.Text = "فایل شما به سرور منتقل شد.";
    Else
    lblError.Visible = True
    End If
    End Sub
    کد بالا پیچیدگی چندانی ندارد اما جهت رفع هرگونه ابهام برخی قسمتهای آن را توضیح می دهیم:
    در حلقه شرطی ابتدا خاصیبت PostedFile که به فایل مورد انتقال اشاره می کند مورد بررسی قرار می گیرد و چنانچه طول نام فایل برابر صفر نباشد (یعنی فایلی انتخاب شده باشد) آنگاه با استفاده از متد SaveAs فایل را روی سرور ذخیره می کند. نکته ای که این جا مطرح است این است که با استفاده از توابع Mid و InStrRev تنها قسمت انتهایی مسیر فایل روی سخت دیسک شما (یعنی \filename.ext) دریافت شده و به انتهای مسیر فیزیکی Server شما می چسبد تا فایل مزبور با همان نام روی Server ذخیره شود. شما می توانید مسیر فیزیکی سرور خود را با ساختن یک فایل ساده مثل ShowPath.aspx و قرار دادن دستور زیر پیدا کنید.

    <% Response.Write(Server.MapPath("ShowPath.as px")) %>


    نکته دیگری که بایستی حتما مد نظر قرار دهید این است که مقدار maxRequestLength را که در واقع حجم فایل ارسالی را محدود می کند تنظیم کنید. برای این کار در فایل web.config خود و در قسمت <system.web> تگ زیر را اضافه کنید:

     <httpRuntime maxRequestLength="50000" /> 

    عدد فوق بر حسب بایت می باشد و در این مثال حجم فایل ارسالی حداکثر 50 کیلوبایت در نظر گرفته شده است. چنانچه شما می خواهید در این زمینه نیز محدودیتی را برای کاربران خود اعمال کنید بایستی در یک حلقه شرطی ویژگی filename.PostedFile.ContentLength را نیز کنترل کنید.
    آخ... مردم از بس که جدی حرف زدم !! :shock: .........آخیش تموم شد

  2. #2
    کاربر دائمی آواتار Mahdavi
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    ایران - میگن تهرون
    پست
    606
    دوست عزیز
    با تشکر از زحمت شما. من کد شما رو ویرایش کردم. لطفا برای خوانا شدن مطالبتون کدها رو توی تگ code قرار بدید.
    ممنون

  3. #3
    متشکر......آخه من توی این سایت تازه وارد هستم.... هنوز به امکاناتش وارد نشدم...ممنون

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •