آپلود همزمان چند فایل با استفاده از jQuery AJAX و JQueryUI در ASp.Net
پنجشنبه 15 مرداد 1394در این مقاله قصد داریم با استفاده از JQuery و 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 ،داده ها را ارسال میکنیم
- ASP.net
- 2k بازدید
- 5 تشکر