zoukankan      html  css  js  c++  java
  • ICSharpCode.SharpZipLib 内存压缩 下载

        private void DownLoadAsZip(string folderName, string outFileName)
        {
            //取文件夹下文件,只取当前目录下文件,子文件不取
            string[] files = Directory.GetFiles(folderName);
    
            int folderOffset = folderName.Length + (folderName.EndsWith("\") ? 0 : 1);  //设置文件路径长度,方便后续取文件夹中文件及生成子文件夹
    
            MemoryStream outputMemStream = new MemoryStream();
            ZipOutputStream zipStream = new ZipOutputStream(outputMemStream);
            zipStream.SetLevel(0);
    
            foreach (string filename in files)
            {
    
                FileInfo fi = new FileInfo(filename);
    
                string entryName = filename.Substring(folderOffset); // Makes the name in zip based on the folder //取文件名称
                entryName = ZipEntry.CleanName(entryName); // Removes drive from name and fixes slash direction//格式化文件名称
                ZipEntry newEntry = new ZipEntry(entryName); //生成压缩文件项
                newEntry.DateTime = fi.LastWriteTime; // Note the zip format stores 2 second granularity
    
                newEntry.Size = fi.Length;
    
                zipStream.PutNextEntry(newEntry); //把压缩文件项加入 压缩文件流,应该是打开项目添加接口
    
                // Zip the file in buffered chunks
                // the "using" will close the stream even if an exception occurs
                byte[] buffer = new byte[4096];
                using (FileStream streamReader = File.OpenRead(filename))
                {
                    StreamUtils.Copy(streamReader, zipStream, buffer); //把压缩文件项的文件流 copy 进 压缩文件流
                }
                zipStream.CloseEntry();
            }
    
            zipStream.IsStreamOwner = false;    // False stops the Close also Closing the underlying stream.
            zipStream.Close();          // Must finish the ZipOutputStream before using outputMemStream.
    
            //导出
    
            Response.ContentType = "application/zip";
            Response.AddHeader("content-disposition", "attachment;  filename=" + HttpUtility.UrlEncode(outFileName + ".zip", System.Text.Encoding.UTF8));
            outputMemStream.WriteTo(Response.OutputStream);
            Response.Flush();
            Response.End();
    
        }
  • 相关阅读:
    Notes of Daily Scrum Meeting(12.18)
    Notes of Daily Scrum Meeting(12.17)
    Notes of Daily Scrum Meeting(12.16)
    Notes of Daily Scrum Meeting(12.8)
    Notes of Daily Scrum Meeting(12.5)
    Notes of Daily Scrum Meeting(12.3)
    Notes of Daily Scrum Meeting(11.12)
    Linux中profile、bashrc、bash_profile之间的区别和联系
    Linux GCC编译
    mysql 5.7.16 远程连接
  • 原文地址:https://www.cnblogs.com/BinBinGo/p/11206089.html
Copyright © 2011-2022 走看看