آپلود همزمان چند فایل با استفاده از jQuery AJAX و JQueryUI در ASp.Net

پنجشنبه 15 مرداد 1394

در این مقاله قصد داریم با استفاده از JQuery و JQueryUI چند فایل را به صورت همزمان در ASp.Net آپلود کنیم

آپلود همزمان چند فایل با استفاده از  jQuery AJAX و  JQueryUI  در ASp.Net

هدف:

هدف از این مقاله این است که چند فایل را به صورت همزمان آپلود کرده و فایل های آپلود شده را در یک پوشه در برنامه ذخیره کنیم و پس از آپلود فایل یک نوار پیشرفت به منظور تکمیل فرایند آپلود به کاربر نشان دهیم.

روش کار:

در این مقاله تکنولوژی مورد استفاده ASp.Net است که یک پوشه در روت پروژه برای ذخیره فایل ها و عکس ها در آن ایجاد میکنیم که با استفاده از  jQuery AJAX فایل ها را در ان ذخیره میکنیم و با استفاده از   JQueryUI نوار پیشرفت کار را به کاربر نشان میدهیم.

مرحله 1:

ویژوال استادیو را باز کرده و یک پروژه از نوع  ASP.NET web application  ایجاد میکنیم.

در سایت  jqueryui.com رفته در قسمت download ها رفته و آخرین ورژن JqueryUI ر امانند زیر دانلود کنید .

پس از دانلود، یک فایل Zip به شما میدهد که آن را UnZip کنید ودر روت برنامه بندازید .

یک کلاس با نام ploadHandler ایجاد کرده و کد زیر را برای آپلود فایل و نوار پیشرفت در آن مینویسیم

    using System.Web;  
    namespace MulFileUpJqueryASPHandler  
    {  
        public class UploadsHandler : IHttpHandler  
        {  
            public void ProcessRequest(HttpContext context)  
            {  
                if (context.Request.Files.Count > 0)  
                {  
                    HttpFileCollection UploadedFilesCollection = context.Request.Files;  
                    for (int i = 0; i < UploadedFilesCollection.Count; i++)  
                    {  
                        System.Threading.Thread.Sleep(2000);  
                        HttpPostedFile PostedFiles = UploadedFilesCollection[i];  
                        string FilePath = context.Server.MapPath("~/UploadedFiles/" + System.IO.Path.GetFileName(PostedFiles.FileName));  
                        PostedFiles.SaveAs(FilePath);  
                    }  
                }  
            }  
            public bool IsReusable  
            {  
                get  
                {  
                    return false;  
                }  
            }  
        }  
    } 

حال در این مرحله روی پروژه راست کلیک کرده و در Add>webForm را انتخاب میکنیم.

حال در پوشه   jQuery Package رفته و مانند زیر اسکریپت های لازم را به پروژه اضافه میکنیم.

 سپس کد های زیر را در صفحه Html وارد میکنیم.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="MulFileUpJqueryASPHandler.Demo" %>  
      
    <!DOCTYPE html>  
      
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head runat="server">  
        <title>jQuery Multiple File Upload</title>  
        <script src="jQuery%20Package/jquery-2.1.4.js"></script>  
        <link href="jQuery%20Package/jquery-ui.css" rel="stylesheet" />  
        <script src="jQuery%20Package/jquery-ui.js"></script>  
        <link href="jQuery%20Package/jquery-ui.structure.css" rel="stylesheet" />  
        <link href="jQuery%20Package/jquery-ui.theme.css" rel="stylesheet" />  
        <script type="text/javascript">  
            $(document).ready(function () {  
                $('#btnUpload').click(function (event) {  
                    var uploadedFiles = $('#uploader')[0].files;  
                    if (uploadedFiles.length > 0) {  
                        var formData = new FormData();  
                        for (var i = 0; i < uploadedFiles.length; i++) {  
                            formData.append(uploadedFiles[i].name, uploadedFiles[i]);  
                        }  
                    }  
                    var progressbarLabel = $('#progressbar-label');  
                    var progressbarDiv = $('#progress-bar');  
                    $.ajax  
                        ({  
                            url: 'UploadsHandler.ashx',  
                            method: 'post',  
                            contentType: false,  
                            processData: false,  
                            data: formData,  
                            success: function () {  
                                progressbarLabel.text('Uploaded Successfully');  
                                progressbarDiv.fadeOut(2000);  
                            },  
                            error: function (err) {  
                                alert(err.statusText);  
                            }  
                        });  
                    progressbarLabel.text('Please Wait...');  
                    progressbarDiv.progressbar({  
                        value: false  
                    }).fadeIn(1000);  
                });  
            });  
        </script>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
            <div>  
                Select the files to be uploaded:  
                <asp:FileUpload ID="uploader" runat="server" AllowMultiple="true" />  
                <br />  
                <br />  
                <input type="button" id="btnUpload" value="Upload Now" />  
            </div>  
            <div style="width:500px">  
                <div id="progress-bar" style="position: relative; display: none">  
                    <span id="progressbar-label" style="position: absolute; left: 30%; top: 20%;">Please Wait...</span>  
                </div>  
            </div>  
        </form>  
    </body>  
    </html>  

حال با زدن دکمه F5  از برنامه اجرا بگیرید.

 

 

توضیحات :

کلاس UploadHandler.cs:

در ایتدا با یک بررسی کردیم که آیا کاربر پیش از چند فایل برای آپلود قرار داده یا نه

سپس فایل های آپلود شده را در  HttpFileCollection ذخیره میکنید

و با استفاده از حلقه for در حال تکرار این کار هستیم

سپس بعد از هر بار آپلود  مقدار را در Httppostedfile ذخیره میکنیم

و دآخر عکس را با استفاده از Server.MapPath در پوشه ای که در پروژه ساختیم ذخیره میکنیم.

Demo.aspx:

در این صفحه یک فایل آپلود و یکtextbox  ایجاد میکنیم.

و سپس یک  Progressbar  با طول 500px ایجاد کردیم

یک span برای نشان دادن پیام به کاربر ایجاد میکنیم

 

:jQuery Code

در رویداد کلیک ، یک فایل آپلود برای ذخیره فایل ها ایجاد میکنیم

سپس با استفاده از Ajax ،داده ها را ارسال میکنیم

 

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید