Yazı Font Küçült Yazı Font Büyült

GridView da Seçili Dosyaları Çoklu Olarak Sıkıştırmak

 

Merhaba arkadaşlar bu makalemizde Gridview nesnesinde seçilecek olan dosyaları çoklu olarak zipleyeceğiz.

İlk önce Ionic.Zip.dll dosyasını buradan indiriniz. İndirdiğiniz dosyayı projenizde Bin klasörüne ekleyin.

Sonra Solution Explorer da projenize sağ tıklayarak Add Reference ye tıklayınız. (Şekil 1)

 

Resim1

Şekil 1

 

Şekil 2 deki gibi Browse kısmından Bin klasöründeki Ionic.Zip.dll dosyasını seçin ve Ok butonuna tıklayın.

 

Resim2

Şekil 2

 

Bir sonraki adımda Class kısmına

 

using Ionic.Zip;

 

ekleyin.

 

Ekran Çıktıları

 

Resim3

Şekil 3

 

Resim4

Şekil 4

 

Resim5

Şekil 5

 

Resim6

Şekil 6

 

Default.aspx.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

using System.Collections.Generic;

using Ionic.Zip;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            //Local serverimizdaki Dosyalar klasöründeki dosyalarımızın GridView nesnesinde gösterimini

           // sağlıyoruz.

            string[] dosyaYolu = Directory.GetFiles(Server.MapPath("~/Dosyalar/"));

            List<ListItem> dosya = new List<ListItem>();

            foreach (string dosyaPath in dosyaYolu)

            {

                dosya.Add(new ListItem(Path.GetFileName(dosyaPath), dosyaPath));

            }

            GridView1.DataSource = dosya;

            GridView1.DataBind();

        }

 

    }

    protected void btnZip_Click(object sender, EventArgs e)

    {

        using (ZipFile zip = new ZipFile())

        {

            //ziplenecek dosyaları Dosya klasörüne ekliyoruz.

            zip.AlternateEncodingUsage = ZipOption.AsNecessary;

            zip.AddDirectoryByName("Dosya");

            foreach (GridViewRow row in GridView1.Rows)

            {

                //Checkbox ı seçili olan dosyaları zipleyeceğiz.

                if ((row.FindControl("chkSec") as CheckBox).Checked)

                {

                    string filePath = (row.FindControl("lblDosyaYolu") as Label).Text;

                    zip.AddFile(filePath, "Dosya");

                }

            }

            Response.Clear();

            Response.BufferOutput = false;

            //ziplenecek olan dosyanın adını oluşturuyoruz.

            string zipAdı = String.Format("ziplidosya_{0}.zip", DateTime.Now.ToString("dd-MMM-yyyy-HHmmss"));

            Response.ContentType = "application/zip";

            Response.AddHeader("content-disposition", "attachment; filename=" + zipAdı);

            zip.Save(Response.OutputStream);

            Response.End();

 

        }

    }

}

 

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<!DOCTYPE html>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"

            AutoGenerateColumns="false" EmptyDataText="Dosya mevcut değil" >

 

                <Columns>

        <asp:TemplateField>

            <ItemTemplate>

                <asp:CheckBox ID="chkSec" runat="server" />

                <asp:Label ID="lblDosyaYolu" runat="server" Text='<%# Eval("Value") %>' Visible="false"></asp:Label>

            </ItemTemplate>

        </asp:TemplateField>

        <asp:BoundField DataField="Text" HeaderText="Dosya Adı" />

    </Columns>

 

            <AlternatingRowStyle BackColor="White" />

            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />

            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />

            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />

            <SortedAscendingCellStyle BackColor="#FDF5AC" />

            <SortedAscendingHeaderStyle BackColor="#4D0000" />

            <SortedDescendingCellStyle BackColor="#FCF6C0" />

            <SortedDescendingHeaderStyle BackColor="#820000" />

        </asp:GridView>

   

        <br />

        <asp:Button ID="btnZip" runat="server" OnClick="btnZip_Click" Text="Dosyaları Sıkıştır" Width="195px" />

   

    </div>

    </form>

</body>

</html>

 

Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN