搜索 | 会员  
ASP.NET多文件批量打包下载
来源: CSDN博客   作者:xttxqjfg  日期:2016/2/15  类别:编程语言  主题:.NET  编辑:一丁
在项目实施中,遇到了将多个文件一起打包后,提供给用户下载。如:在一个ASP.NET的开发项目中,通过一个GridView选中对应行数据的CheckBox,就可以实现对选中文件的打包下载了。

在项目实施中,遇到了将多个文件一起打包后,提供给用户下载。如:在一个ASP.NET的开发项目中,通过一个GridView选中对应行数据的CheckBox,就可以实现对选中文件的打包下载了。

在对多文件打包中用到了 DotNetZip 的方法来实现对多文件压缩打包。需要到http://dotnetzip.codeplex.com/处下载该文件,然后引用即可。


Default.aspx:  

  

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

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

  

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

<head runat="server">  

<title>图片打包下载</title>  

</head>  

<body>  

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

<p>  

<asp:Button ID="PackDown" runat="server" Text="打包下载" OnClick="PackDown_Click" /></p>  

<asp:GridView ID="GridView1" runat="server" Width="500px"  

CellPadding="8" CellSpacing="1">  

<Columns>  

<asp:TemplateField HeaderText="<input type="checkbox"/>" InsertVisible="False">  

<ItemTemplate>  

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

</ItemTemplate>  

<ItemStyle HorizontalAlign="Center" />  

</asp:TemplateField>  

<asp:TemplateField HeaderText="文件列表" InsertVisible="False">  

<EditItemTemplate>  

<asp:Label ID="Label1" runat="server" Text='<%# eval_r("Name") %>'></asp:Label>  

</EditItemTemplate>  

<ItemTemplate>  

<asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'></asp:Label>  

</ItemTemplate>  

</asp:TemplateField>  

</Columns>  

</asp:GridView>  

</form>  

</body>  

</html>  

  

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 Ionic.Zip;  

  

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

{  

protected void Page_Load(object sender, EventArgs e)  

{  

if (!Page.IsPostBack)  

{  

BindFilesList();  

}  

}  

  

void BindFilesList()  

{  

List<System.IO.FileInfo> lstFI = new List<System.IO.FileInfo>();  

string[] files = System.IO.Directory.GetFiles("d:\\webroot");  

foreach (var s in files)  

{  

lstFI.Add(new System.IO.FileInfo(s));  

}  

  

GridView1.DataSource = lstFI;  

GridView1.DataBind();  

}  

  

protected void PackDown_Click(object sender, EventArgs e)  

{  

Response.Clear();  

Response.ContentType = "application/zip";  

Response.AddHeader("content-disposition", "filename=DotNetZip.zip");  

using (ZipFile zip = new ZipFile(System.Text.Encoding.Default))//解决中文乱码问题  

{  

foreach (GridViewRow gvr in GridView1.Rows)  

{  

if (((CheckBox)gvr.Cells[0].Controls[1]).Checked)  

{  

zip.AddFile("d:\\webroot\\" + (gvr.Cells[1].Controls[1] as Label).Text, "");  

}  

}  

  

zip.Save(Response.OutputStream);  

}  

  

Response.End();  

}  

}  





德仔网尊重行业规范,每篇文章都注明有明确的作者和来源;德仔网的原创文章,请转载时务必注明文章作者和来源:德仔网;
头条那些事
大家在关注
广告那些事
我们的推荐
也许感兴趣的
干货