C#循环下载多个文件(把多个文件压缩成一个文件可以一次性下载)ICSharpCode.SharpZipLib.Zip 批量下载 内存存储不占硬盘

本文主要是介绍C#循环下载多个文件(把多个文件压缩成一个文件可以一次性下载)ICSharpCode.SharpZipLib.Zip 批量下载 内存存储不占硬盘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用插件ICSharpCode.SharpZipLib.Zip

https://download.csdn.net/download/sunwork888/16038504

 

  public void BatchQueryPolicyDownloadUrlZip(System.Web.HttpResponseBase Response, List<Ins> oList){using (System.IO.MemoryStream stream = new System.IO.MemoryStream()){using (ZipOutputStream zipStream = new ZipOutputStream(stream))//ZipOutputStream zipStream = new ZipOutputStream(File.Create("F:\\111\\111.zip"));{zipStream.SetLevel(6); //压缩级别0-9  ICSharpCode.SharpZipLib.Checksums.Crc32 crc = new ICSharpCode.SharpZipLib.Checksums.Crc32();foreach (var item in oList){var fileName = item.PolicyNo + item.InsuredName;var fileURL = item.PolicyDownloadUrl;System.Net.WebClient wc = new System.Net.WebClient();using (System.IO.MemoryStream streamUrl = new System.IO.MemoryStream(wc.DownloadData(fileURL))){byte[] buffer = streamUrl.ToArray();//建立压缩实体ZipEntry entry = new ZipEntry(fileName);//原文件名entry.DateTime = DateTime.Now;//空间大小crc.Reset();crc.Update(buffer);entry.Crc = crc.Value;zipStream.PutNextEntry(entry);zipStream.Write(buffer, 0, buffer.Length); }}zipStream.Finish();stream.Position = 0;Response.Buffer = true;Response.AddHeader("Content-Disposition", $"attachment; filename=附件_{DateTime.Now.ToString("yyMMddHHmmssfff")}.zip");Response.ContentType = "application/octet-stream";Response.BinaryWrite(stream.ToArray());zipStream.Close();stream.Close();GC.Collect();GC.Collect(1);}}}

 

这篇关于C#循环下载多个文件(把多个文件压缩成一个文件可以一次性下载)ICSharpCode.SharpZipLib.Zip 批量下载 内存存储不占硬盘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732599

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然