1. این پایگاه به ثبت ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ایران رسیده است.

    مهمان عزیز سپاس بابت بازدید شما از تالار گفتگوی دهه هفتادی ها.

    عضویت در انجمن رایگان بوده و برای عموم باز میباشد . با صرف 30 ثانیه یکی از اعضای دهه هفتادی ها شوید .

آپلود کردن فایل به سرور در Asp.net

شروع موضوع توسط saeid-ha ‏Nov 1, 2013 در انجمن برنامه نویسی و طراحی سایت

  1. saeid-ha

    saeid-ha belong to autumn !...

    3,098
    11,982
    1,894
    آپلود کردن فایل به سرور در 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 دارای پارامتری است که محل و نام فایلی که قرار است بر روی سرور ذخیره شود را مشخص می کند.

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

    <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)

    یک نکته مهم:
    توجه کنید که به طور پیش فرض طول داده های ارسالی در یک 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>