ورود / ثبت نام
0
0

آموزش آپلود فایل و زیپ کردن آن در هنگام آپلود در ASP.NET

431 بازدید
آپلود فایل

آپلود فایل

در این مقاله آموزش نحوه ی فشرده سازی فایل به فرمت زیپ برای آپلود و دانلود فایل های زیپ آمده است. کد های موردنیاز برای آپلود فایل و دانلود نیز آورده شده است.به همراه کد های مورد نیاز توضیحات کاملی نیز برای درک بهتر ، داده شده است . همچنین دموی متناسب با موضوع در ادامه ی مطلب برای دانلود قرار گرفته است …

مشخصات

برای ساخت این برنامه به منظور آپلود فایل نیاز به یک فایل third-party DLL برای ارجاع توسط برنامه دارید :

Ionic.Zip.dll

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

طراحی

یک کنترل FileUpload ، یک Button و یک GridView اضافه کنید.

حال صفحه تان را به صورت زیر طراحی کنید :

آپلود فایل

یا میتوانید سورس زیر را کپی کنید :

<form id="form1" runat="server">
   <div>
        <table align="center">
            <tr>
                <td align="center">
                    <asp:FileUpload ID="FileUpload1" runat="server" />
                </td>
            </tr>
            <tr>
                <td align="center">
                    <asp:Button ID="Button1" runat="server" Text="Save and compress" OnClick="Button1_Click" />
                </td>
            </tr>
            <tr>
                <td align="center">
                    <asp:GridView ID="gvZip" runat="server" AutoGenerateColumns="false" OnRowCommand="gvZip_RowCommand">
                        <Columns>
                            <asp:TemplateField HeaderText="Click to Download">
                                <ItemTemplate>
                                    <asp:LinkButton ID="lnkDownload" runat="server" Text='<%# Bind("Name") %>' CommandName="Download"
                                        CommandArgument='<%# Bind("Name") %>' />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                </td>
           </tr>
        </table>
    </div>
    </form>

 

حال به قسمت View Code بروید.

سپس یک مرجع از DLL زیر به وب سایت تان بدهید :
Ionic.Zip.dll

و کد زیر را در فایل .CS وارد کنید :

using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ionic.Zip;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void BindDataList()
    {
        DirectoryInfo dir = new DirectoryInfo(MapPath("Zip"));
        FileInfo[] files = dir.GetFiles();
        ArrayList listItems = new ArrayList();
        foreach (FileInfo info in files)
        {
            listItems.Add(info);
        }
        gvZip.DataSource = listItems;
        gvZip.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        BindDataList();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        using (var zip = new ZipFile())
        {
            if (FileUpload1.HasFile)
            {
                zip.Password = "123";
                zip.Encryption = EncryptionAlgorithm.WinZipAes256;
                string filename = Path.GetFileName(FileUpload1.FileName);
                FileUpload1.SaveAs(Server.MapPath("~/Upload//") + filename);
                string filenameWitoutextension = Path.GetFileNameWithoutExtension(FileUpload1.FileName);
                string destdir = Server.MapPath(".") + @"\Zip\" + filenameWitoutextension + ".Zip";
                zip.AddDirectory(Server.MapPath(".") + @"\Upload\");
                zip.Save(destdir);
                string[] files = System.IO.Directory.GetFiles(Server.MapPath("~/Upload//"));
                foreach (string f in files)
                {
                    System.IO.File.Delete(f);
                }
                BindDataList();
            }
        }
    }
    protected void gvZip_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Download")
        {
            Response.Clear();
            Response.ContentType = "application/octet-stream";
            Response.AppendHeader("content-disposition", "attachment; filename=" + e.CommandArgument.ToString());
            Response.TransmitFile(Server.MapPath("~/Zip//" + e.CommandArgument.ToString()));
            Response.End();
        }
    }
}

 

در کد بالا این دو خط زیر را چک کنید :

zip.Password = "123";
zip.Encryption = EncryptionAlgorithm.WinZipAes256;

 

اینها به عنوان محافظ کلمه ی عبور زیپ به وسیله ی پاس دادن کلمه ی عبورتان و میتوانید الگوریتم رمزنگاری خودتان را انتخاب کنید.

اگر احتیاجی به محافظ کلمه ی عبور ندارید تنها همین دو خط را پاک کنید.

حال برنامه تان را بسازید. سپس فایل موردنظرتان را برای زیپ کردن انتخاب کنید.

بر روی دکمه ی Save and compress کلیک کنید.

حال فایل شما با فرمت زیپ در GridView نمایش داده خواهد شد.

آپلود فایل

حال برای دانلود بر روی فایل کلیک کنید.

آپلود فایل

لطفا نظرات و پیشنهادات خودتان را با من در میان بگذارید.

ممنون از وقتی برای خواندن این مقاله گذاشتید.

موفق باشید.

آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=14762
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

1 نظر در مورد آموزش آپلود فایل و زیپ کردن آن در هنگام آپلود در ASP.NET

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. با سلام و ادب
    ممنون از آموزش..
    میخواستم ازتون بپرسم که آموزش جدیدی مثل اون سایت خبری که درست کرده بودین نمیخواین شروع کنین؟
    من هر روز به سایتتون سر میزنم فقط بخاطر اینکه آموزش جدیدی رو شروع کرده باشین!
    اگر هم آموزش پروژه محور ۰ تا۱۰۰ نمیخواین بذارین لاقل ویدیو های آموزشی تک قسمتی مفید در خصوص asp.net بذارین!ممنون

    لایک