zoukankan      html  css  js  c++  java
  • ASP.NET打包生成zip压缩文件

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;
    using Microsoft.Win32;
    using System.Diagnostics;
    using ICSharpCode.SharpZipLib.Zip;
    
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
    
            }
        }
    
     protected void btnSave_Click(object sender, EventArgs e)
        {
            string str = "1.jpg|2.jpg|3.jpg";//文件名
          string saveName = "test";//保存的文件名
            MemoryStream ms = new MemoryStream();
            byte[] buffer = null;
    
            using (ZipFile file = ZipFile.Create(ms))
            {
                file.BeginUpdate();
                file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
    
                string[] s = str.Split('|');
                foreach (string item in s)
                {
                    file.Add(Server.MapPath("~/newImages/" + item + ""));
                }
    
                file.CommitUpdate();
    
                buffer = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(buffer, 0, buffer.Length);
            }

                      //判断如果是火狐浏览器则不进行UTF-8编码
                       System.Web.HttpBrowserCapabilities browser = Request.Browser;
                  if (browser.Browser=="Firefox")
                     {

                         Response.AddHeader("content-disposition", "attachment;filename=" + saveName + ".zip");

                     }

                  else{

                     //IE和其它浏览器都要进行UTF-8编码,中文不编码会出现乱码

                        Response.AddHeader("content-disposition""attachment;filename=" +  HttpUtility.UrlEncode(saveName) + ".zip");

                      }

    
            Response.BinaryWrite(buffer);
            Response.Flush();
            Response.End(); 
        }
     public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
        {
    
            #region INameTransform 成员
    
            public string TransformDirectory(string name)
            {
                return null;
            }
    
            public string TransformFile(string name)
            {
                return Path.GetFileName(name);
            }
    
            #endregion
        }
     }

    注:需要下载一个 ICSharpCode.SharpZipLib.dll 组件,并添加引用

  • 相关阅读:
    webapp之路--meta标签format-detection、apple-mobile-web-app-capable
    js 进行年月日时间差计算
    JS手机邮箱身份证号码的正则验证以及通过身份证号码获取出生年月日
    react setState()方法可以只修改一个对象的部分属性
    js获取当前时间格式YYYY/MM/DD
    提高CSS开发能力的技巧集
    JavaScript专业规则12条
    为什么大型网站前端使用PHP后台逻辑用Java
    Cookie与Session的区别
    2016年JavaScript技术栈展望
  • 原文地址:https://www.cnblogs.com/Yashull/p/3701743.html
Copyright © 2011-2022 走看看