آپلود فایل و تبدیل به فرمت Zip در Asp.net
چهارشنبه 13 آبان 1394در این مقاله قصد داریم یک فایل را آپلود نماییم و بعد از آپلود کردن فایل آن را به فایل Zip تبدیل نماییم ، در این مقاله هدف استفاده از کلاس ZipArchive, ZipArchiveEntry که در .Net 4.5 است
یک پروژه ی جدید ایجاد نمایید ، و .Net 4.5 را انتخاب کنید ، یک صفحه با پسوند aspx ایجاد نمایید، و به صفحه ی خود فضای نام System.IO.Compression و System.IO را اضافه نمایید.
می توانید قبل از خواندن این مقاله برای درک بهتر ادامه ی این مقاله ایجاد فایل zip در Asp.net را مطالعه نمایید.
کد های صفحه ی html به صورت زیر خواهد بود:
<div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> <asp:GridView ID="GridView1" runat="server"></asp:GridView> <asp:Label ID="Label1" runat="server"></asp:Label> </div>
برای اینکه کلاس ZipArchive و ZipFile اضافه شود باید Nuget آن را به پروژه ی خود اضافه نمایید.
اگر روی پروژه راست کلیک نمایید و دو کلاس بالا را جستجو کنید آن را می توانید نصب نمایید.
code Behind به صورت زیر خواهد بود:
void Upload() { if (!Directory.Exists(ZipfilePath)) Directory.CreateDirectory(ZipfilePath); if (!Directory.Exists(UploadfilePath)) Directory.CreateDirectory(UploadfilePath); if (FileUpload1.HasFile) { if (FileUpload1.PostedFile.ContentLength < Maxfilesize) { try { string filename = Path.GetFileName(FileUpload1.FileName); string _path = String.Format("{0}\\{1}", ZipfilePath, filename); FileUpload1.SaveAs(_path); string zipFileName = String.Format("{0}\\{1}_{2}.zip", UploadfilePath, DateTime.Now.ToString("MMddyyhms"), filename); using (ZipArchive newFile = ZipFile.Open(zipFileName, ZipArchiveMode.Create)) { newFile.CreateEntryFromFile(_path, filename); } delete(_path); Label1.Text = string.Format("<font color='#080'>Status: File uploaded and zip file created!</font>", zipFileName); } catch (Exception ex) { Label1.Text = string.Format("<font color='#800'>Status: The following error occured: {0}</font>", ex.Message); } } } } public static string ZipfilePath { get { return HttpContext.Current.Server.MapPath("~/createzip"); } } public static string UploadfilePath { get { return HttpContext.Current.Server.MapPath("~/upload"); } } public static int Maxfilesize { get { return 5242880; } } void delete(string file) { if (File.Exists(file)) File.Delete(file); } protected void Button1_Click(object sender, EventArgs e) { Upload(); }
زمانی که یک BreakPoint قرار دهید و اجرا بگیرید و F10 را بزنید به صورت زیر خواهد بود:
در تابع بالا زمانی که کاربر فایل را انتخاب می کند و دکمه ی آپلود را می زند، تابع آپلود صدا زده می شود، در این تابع اگر پوشه ها درست نشده بود ابتدا پوشه ها را می سازد، و بعد کلاس ZipArchive فایل را zip می کند، و فایلی که آپلود شده بود حذف می شود و فایل zip شده در پوشه قرار می گیرد.
خروجی به صورت زیر خواهد بود:
- ASP.net
- 3k بازدید
- 0 تشکر