توضیحات و دانلود

دانلود فایل به عنوان فایل بایگانی فشرده با استفاده از C # و VB.Net در ASP.Net
0 0
دانلود فایل به عنوان فایل بایگانی فشرده با استفاده از C # و VB.Net در ASP.Net

با سلام در یکی از مقاله های قبلی دانلود فایل ها را توضیح داده ایم ، آپلود فایل ها، ذخیره در پوشه و نمایش در GridView با دانلود و حذف گزینه در ASP.Net .
در این مقاله چگونگی دانلود چندین فایل از سرور را با کلیک بر روی دکمه با ایجاد فایل بایگانی فشرده با استفاده از کتابخانه DotNetZip در ASP.Net با استفاده از C # و VB.Net توضیح می دهیم.
مراجعه به کتابخانه DotNetZip
شما نیاز به دانلود DotNetZip Library DLL با استفاده از لینک دانلود زیر دارید.
DotNetZip را دانلود کنید یا در پایان مقاله DLL را در نمونه پیوست پیدا خواهید کرد.
پس از داشتن DLL ، می توانید Ionic.Zip.Reduced.dll را در فایل BIN قرار دهید .
فضاهای نام
شما باید نامهای زیر را وارد کنید.
C #

using System.IO;
using Ionic.Zip;
using System.Collections.Generic;

VB.Net

Imports System.IO
Imports Ionic.Zip
Imports System.Collections.Generic

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

نمایش فایل های ذخیره شده در پوشه روی سرور در GridView
یک کنترل GridView را در صفحه وب خود و یک دکمه قرار داده ایم که برای دانلود فایل ها استفاده خواهد شد.
 یک CheckBox Control را در GridView قرار داده ایم ، این CheckBox به کاربران امکان می دهد تا فایل مورد نظر خود را برای دانلود انتخاب کنند.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EmptyDataText="No files available">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="chkSelect" runat="server" />
                <asp:Label ID="lblFilePath" runat="server" Text='<%# Eval("Value") %>' Visible="false"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Text" HeaderText="File Name" />
    </Columns>
</asp:GridView>
<br />
<asp:Button ID="btnDownload" runat="server" Text="Download" OnClick="DownloadFiles" />

کد زیر برای اتصال لیست فایل ها از پوشه سرور یا فهرست به کنترل GridView استفاده می شود.
C #

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string[] filePaths = Directory.GetFiles(Server.MapPath("~/Files/"));
        List<ListItem> files = new List<ListItem>();
        foreach (string filePath in filePaths)
        {
            files.Add(new ListItem(Path.GetFileName(filePath), filePath));
        }
        GridView1.DataSource = files;
        GridView1.DataBind();
    }
}

VB.Net

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim filePaths As String() = Directory.GetFiles(Server.MapPath("~/Files/"))
        Dim files As New List(Of ListItem)()
        For Each filePath As String In filePaths
            files.Add(New ListItem(Path.GetFileName(filePath), filePath))
        Next
        GridView1.DataSource = files
        GridView1.DataBind()
    End If
End Sub

 دانلود فایل انتخاب شده در GridView به عنوان فایل بایگانی ارسالی با استفاده از DotNetZip
با کلیک بر روی دکمه دانلود، ابتدا یک شیء از کتابخانه DotNetZip ایجاد و یک حلقه بر روی ردیف های GridView اجرا می شود و تمام فایل هایی که Checkbox برای آن بررسی شده به شی Zip اضافه می شوند.
سرانجام شی Zip به صورت فایل Zip دانلود می شود.
C #

protected void DownloadFiles(object sender, EventArgs e)
{
    using (ZipFile zip = new ZipFile())
    {
        zip.AlternateEncodingUsage = ZipOption.AsNecessary;
        zip.AddDirectoryByName("Files");
        foreach (GridViewRow row in GridView1.Rows)
        {
            if ((row.FindControl("chkSelect") as CheckBox).Checked)
            {
                string filePath = (row.FindControl("lblFilePath") as Label).Text;
                zip.AddFile(filePath, "Files");
            }
        }
        Response.Clear();
        Response.BufferOutput = false;
        string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
        Response.ContentType = "application/zip";
        Response.AddHeader("content-disposition", "attachment; filename=" + zipName); 
        zip.Save(Response.OutputStream);
        Response.End();
    }
}

VB.Net

Protected Sub DownloadFiles(sender As Object, e As EventArgs)
    Using zip As New ZipFile()
        zip.AlternateEncodingUsage = ZipOption.AsNecessary
        zip.AddDirectoryByName("Files")
        For Each row As GridViewRow In GridView1.Rows
            If TryCast(row.FindControl("chkSelect"), CheckBox).Checked Then
                Dim filePath As String = TryCast(row.FindControl("lblFilePath"), Label).Text
                zip.AddFile(filePath, "Files")
            End If
        Next
        Response.Clear()
        Response.BufferOutput = False
        Dim zipName As String = [String].Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"))
        Response.ContentType = "application/zip"
        Response.AddHeader("content-disposition", "attachment; filename=" + zipName)
        zip.Save(Response.OutputStream)
        Response.End()
    End Using
End Sub

عکس صفحه

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :