zoukankan      html  css  js  c++  java
  • ASP.NET多文件批量打包下载

    在项目实施中,遇到了将多个文件一起打包后,提供给用户下载。如:在一个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, "");//AddFile()第二个参数填写时不打包路径
    }
    }
    zip.Save(Response.OutputStream);//输出到浏览器下载
    }
    Response.End();
    }
    }

    DEMO下载地址:https://dwz.cn/Jw3z6fVq 

  • 相关阅读:
    如何解决UITextField挡住键盘的问题
    设置UITextField中能输入的最大的字数
    如何判断IOS的设备版本型号
    IOS中如何实现对话聊天
    精美的iOS图片欣赏
    关于IOS 应用图标的设置
    ios7中添加多个按钮
    elementary0.4:快速配置工具
    elementary:网易云音乐白条解决
    deepin下eclipse快捷方式
  • 原文地址:https://www.cnblogs.com/xproer/p/10741710.html
Copyright © 2011-2022 走看看