آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net
0 0

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net


آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

در این پست می خواهیم چگونگی ایجاد لینک دانلود برای اطلاعات پایگاه به صورت فایل های ZIP روی صفحات Asp.Net را آموزش دهیم.

شاید شما هم در بعضی از مواقع مجبور شده اید که در وب سایت خودتان برای کاربران لینک های دانلودی را ایجاد کنید ولی ناتوان از این کار بوده اید اما امروز چگونگی ایجاد لینک دانلود برای داده هایتان را یاد خواهید گرفت.

برای مثال یک وب سایت برای اشترک گذاری کتاب دارید حال میخواهید لینک کتاب ها را برای دانلود در اختیار کاربران قرار دهید. پس چگونگی این کار را مشاهده خواهیم کرد.

ابتدا یک پروژه از نوع Empty در ویژوال ایجاد می کنیم و نام آن را ioniciranganj قرار میدهیم.

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

قبل از ایجاد صفحات یک پایگاه داده ایجاد و جدول مانند زیر طراحی و اماده می کنیم.

CREATE TABLE [dbo].[tbl_data]
(
	[id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [book] NVARCHAR(50) NULL
)

در ادامه یک صفحه وب فرم با نام gridview_demo در پروژه ایجاد میکنیم.

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

در این صفحه نیاز داریم تا لینک دانلود را به نمایش بگذاریم پس کدنویسی این صفحه را به شکل زیر انجام می دهیم.

<asp:GridView ID="GVDownload" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="id" BackColor="White" 
                        BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
                        GridLines="Vertical">
            <AlternatingRowStyle BackColor="#DCDCDC" />
            <Columns>
                <asp:TemplateField HeaderText="شماره کتاب">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("id") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="لینک دانلود">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkbtn" runat="server" CommandName="Download" Text='<%#Bind("book")%>'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
 </asp:GridView>

توجه داشته باشید که لینک دانلود با لینک باتن طراحی شده است.

وضعیت کار تا اینجا به شکل زیر است.

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

در ادامه به صفحه کلاینت وب فرم میرویم و مراحل کد نویسی برای چگونگی ایجاد لینک دانلود را کد نویسی می کنیم.

ابتدا نیاز است تا یک کلاس به پروژه اضافه کنیم از آدرس زیر کلاس Ionic.Zip.dll را دانلود و به قسمت رفرنس پروژه اضافه کنید.

Ionic.zip.dd

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

یوزینگ های مورد نیاز را طبق تصویر به صفحه اضافه میکنیم.

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

در ادامه تابع page_load یک تابع بنام refreshdata ایجاد و دستور اتصال به پایگاه و کوئری فراخوانی داده ها را کد نویسی می کنیم.

public void refreshdata()
        {
            SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Iranganj_Grid;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("select * from tbl_data", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            GVDownload.DataSource = dt;
            GVDownload.DataBind();


        }

حالا در قسمت page_load تابع بالا را فراخوانی میکنیم.

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            refreshdata();
        }
    }

در آخرین مرحله باید نحوه ایجاد لینک دانلود را پیاده سازی کنیم. با استفاده از RowCommand روی GVDownload دستور لازم را کدنویسی میکنیم.

 protected void GVDownload_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Download")
            {
                using (ZipFile zpf = new ZipFile())
                {
                    LinkButton lnk = (e.CommandSource) as LinkButton;

                    string fileName1 = lnk.Text;
                    string fileName = e.CommandSource.ToString();
                    string filePath = Server.MapPath("~/Files/" + fileName1);
                    zpf.AddFile(filePath, "Files");

                    Response.Clear();
                    Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip");
                    Response.ContentType = "application/zip";
                    zpf.Save(Response.OutputStream);
                    Response.End();


                }
            }   
        }

نکته : باید یک پوشه خالی بانام Files رو پروژه ایجاد کنید . این پوشه در اصل مطالبی هست که شما میخواهید برای دانلود قرار دهید.

نکته 2: مطلب مورد نظر دانلود را به صورت فایل فشرده تبدیل خواهیم کرد.

نکته 3 : نام تمامی فایل های فشرده DownloadedFile خواهد بود.

 

حاصل نتیجه کار :

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

آموزش ساخت لینک دانلود به صورت فایل فشرده ZIP از مطالب در Asp.Net

دانلود

نویسنده علی بهارلویی
گروه مطلب Asp.Net
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۲۵ شهریور ۱۳۹۴
منبع ایران گنج
تعداد نظرات ۸
قیمت کاربران عضو سایت
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha
نظرات کاربران

  • melika

    ببخشید در تایع refreshdata من به جای Data Source=.;Initial Catalog=Iranganj_Grid چی باید بزارم؟ Datatable رو که نباید تغییر بدم؟؟ یه سوال دیگه اینکه توی فولدر Files من باید چه نوع فایل هایی رو با چه اسمی قرار بدم؟ فایل های exe با نام محصول؟

    پاسخ
    • علی بهارلویی

      برای اولی باید نام پایگاه داد رو بذارید. برای select هم به جای tbl_data نام جدولی که برای فایل های دانلود را درنظر گرفتید.

      هرنوع فایلی رو میتونید قرار بدید چون موقع دانلود تبدیل به zip میشود.


       

      پاسخ
      • ملیکا

        اسم دیتابیس من DB است پس یعنی باید بزارم: Data Source:DB جای Initial Catalog چی بزارم؟ اسم فابلهای داخل Files رو باید چی بزارم؟ همنام محصولاتم؟

        پاسخ
        • علی بهارلویی

          بله.

          
          Data Source=.;Initial Catalog=DB

          هرنامی!! هراسم که بزارید بستگی داره از چه روشی واسه نام گذاری استفاده کنید و داخل پایگاه ذخیره کنید.

           

          پاسخ
  • ملیکا

    با سلام از آموزش دقیق و خوبتون ممنونم. من میخوام لینک دانلود رو در صورتی به کاربر نشون بدم که مبلغ محصول مورد نظر رو پرداخت کرده باشه. چطور باید این کار رو انجام بدم؟ ممنون میشم راهنمایی ام کنید.

    پاسخ
    • علی بهارلویی

      درود

      یکی از راهاش اینه که بیایید داخل جدول اطلاعات کاربر یک فیلدی برای تایید پرداخت بذارید وقتی True شد یه شرط بذارید برای دانلود که اگه اون فیلدپرداخت True بود بتونه دانلود کنه.
       

      پاسخ
      • ملیکا

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

        پاسخ
        • علی بهارلویی

          برای اینکه چطور true کنید یکی از راها اینه که دستی این کارو بکنید یعنی بعد از پرداخت کاربر وقتی اطلاعات ارسال شد واستون از بانک برای تایید پرداخت شما برید و فیلد دسترسی رو true کنید و این یکم سخته اگه اطلاعات زیاد باشه البته. یکی دیگه از راها اینه که در پرداخت هایی که انجام میشه از بانک یک صفحه برای ارسال تاییدیه درنظر گرفته میشه که اطلاعات پرداخت موفق برای کاربر ارسال میشه که شما میتونید داخل اون بیاید و ای دی کاربر رو تعریف کنید و فیلد پرداخت رو که پس از ارسال اطلاعات از بانک بیاد و براساس ای دی کاربر فیلد رو True کنه.

           

          برای شرط گذاری هم در همین اموزش این قسمت زیر رو میتونید ظرط true بودن فیلد رو قرار بدید الیته باید توجه کنید که join بین دو جدول کاربر و دانلود برقرار باشه.

          SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Iranganj_Grid;Integrated Security=True");
          SqlCommand cmd = new SqlCommand("select * from tbl_data", con);

           

          پاسخ