NetCore使用ZipFile 和ZipOutputStream
一、序言
环境:NetCore 3.1
项目类型:Web
二、使用ZipFile压缩本地文件
var filePath = Directory.GetCurrentDirectory() + $@"\ImgZip\{DateTime.Now:yyyy-MM-dd}";
using (ZipFile zip = ZipFile.Create(@"D:\test.zip"))
{
zip.BeginUpdate();
zip.SetComment("这是我的压缩包");
zip.AddDirectory(filePath); //添加一个文件夹(这个方法不会压缩文件夹里的文件)
zip.Add(filePath + @"\118e0e67b82e43698b447f1d79a3f9a0.jpg"); //添加文件夹里的文件
zip.CommitUpdate();
}
FileStream fileStream = System.IO.File.OpenRead(@"D:\test.zip");//打开压缩文件
buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
fileStream.Close();
return File(buffer , "application/zip", "118e0e67b82e43698b447f1d79a3f9a0.zip");
三、使用ZipOutputStream 压缩流文件
//获取远程文件,并读取为流文件
string Url = @"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1597509647515&di=3e0ca14b97aafdfd69fc60d3323eec06&imgtype=0&src=http%3A%2F%2Ft8.baidu.com%2Fit%2Fu%3D3571592872%2C3353494284%26fm%3D79%26app%3D86%26f%3DJPEG%3Fw%3D1200%26h%3D1290";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//超时时间
request.Timeout = 60000;
//获取回写流
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
MemoryStream outstream = new MemoryStream();
const int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int count = 0;
while ((count = stream.Read(buffer, 0, bufferLen)) > 0)
{
outstream.Write(buffer, 0, count);
}
byte[] result = null;
//创建压缩流
using (MemoryStream ms = new MemoryStream())
{
using ZipOutputStream zipStream = new ZipOutputStream(ms); //zipStream.Password = "123456";//设置压缩包密码
//ZipEntry 斜杠表示文件夹 为自动按照填写的路径生成多级目录
ZipEntry entry = new ZipEntry(@"文件夹1\文件夹2\118e0e67b82e43698b447f1d79a3f9a0.jpg")
{
DateTime = DateTime.Now,//创建时间
IsUnicodeText = true//解决中文乱码
};
zipStream.PutNextEntry(entry); zipStream.Write(outstream.ToArray(), 0, bytes.Length); zipStream.CloseEntry(); zipStream.IsStreamOwner = false; zipStream.Finish(); zipStream.Close(); ms.Position = 0;
//压缩后的数据被保存到了byte[]数组中。
result = ms.ToArray();
}
return File(result, "application/zip", "118e0e67b82e43698b447f1d79a3f9a0.zip");
NetCore使用ZipFile 和ZipOutputStream的更多相关文章
- java——操作文件
Java文件操作,共实现了文件复制(单个文件和多层目录文件),文件移动(单个文件和多层目录文件),文件删除(单个文件和多层目录文件),文件压缩 (单个文件),文件解压(单个文件),文件分割(将一个大文 ...
- 导出数据库数据制成Excel和txt
引用ICSharpCode.SharpZipLib.dll 1.编写压缩和解压代码 using System; using System.Collections.Generic; using Syst ...
- 利用ICSharpCode.SharpZipLib.Zip进行文件压缩
官网http://www.icsharpcode.net/ 支持文件和字符压缩. 创建全新的压缩包 第一步,创建压缩包 using ICSharpCode.SharpZipLib.Zip; ZipOu ...
- 使用c#将多个文件放入文件夹中,并压缩下载
ZipClass.cs 这个是一个压缩文件的类,可直接复制使用,使用到的命名空间是 using System.IO;using ICSharpCode.SharpZipLib;using ICSha ...
- 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能 (转载并优化处理篇)
转自:http://blog.csdn.net/yanlele424/article/details/6895986 这段时间一直在做一个网站,其中遇到了一个问题,就是在服务器端压缩多个服务器端的文件 ...
- Java ZIP File Example---refernce
In this tutorial we are going to see how to ZIP a file in Java. ZIP is an archive file format that e ...
- [压缩解压缩] SharpZip--压缩、解压缩帮助类
里面有三个类都是用于压缩和解压缩的.大家看下图片 看下面代码吧 /// <summary> /// 类说明:SharpZip /// 编 码 人:苏飞 /// 联系方式:361983679 ...
- 重新开始学习javase_IO
一,认识IO 通过数据流.序列化和文件系统提供系统输入和输出. 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要 ...
- Android 打造自己的个性化应用(五):仿墨迹天气实现续--> 使用Ant实现zip/tar的压缩与解压
上一篇中提到对于Zip包的解压和压缩需要借助Ant 实现,我经过参考了其他的资料,整理后并加上了一些自己的看法: 这里就具体地讲下如何使用Ant进行解压缩及其原因: java中实际是提供了对 zip ...
- Android 打造自己的个性化应用(四):仿墨迹天气实现-->自定义扩展名的zip格式的皮肤
在这里谈一下墨迹天气的换肤实现方式,不过首先声明我只是通过反编译以及参考了一些网上其他资料的方式推测出的换肤原理, 在这里只供参考. 若大家有更好的方式, 欢迎交流. 墨迹天气下载的皮肤就是一个zip ...
随机推荐
- Android网络请求(2)
Android网络请求(2) 在android网络开发中,除get请求外常见的还有post.put.delete这三种,接下来我们将详细讲解这三种请求及参数 GET请求 我们使用过get请求了,对于我 ...
- 线性时间选择(含平均情况O(n)和最坏情况O(n)算法)
前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择.以下包含了我自己的全 ...
- SDK怎么测试?俺不会啊
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/7bc8d1c8.html 你好,我是测试蔡坨坨. 众所周知,在云产品和SaaS蓬勃发展的当下,企业中有许多系统和环节都是依赖 ...
- orcl substr函数与java substring 的不同
前天事情急改一个存储过程时遇到了substr方法时,一直用好,然后用其他方法跳过去了,今天有时间回头来验证 才发现和java太不一样了! select substr('为中华之崛起而读书',2,4) ...
- dojo 访问 VS 创建的Json文件 汉字乱码
通过VS创建了一个json文件,直接保存成了文件放到了Web根目录下. 通过dojo的dojo/request访问,返回的汉字都是乱码. 通过以下方案解决. 用记事本把josn文件打开,然后点击另存为 ...
- UE4 WebUI插件使用指南
在开发数字孪生应用程序的时候,除了三维场景展示之外,也需要开发丰富和酷炫的2D页面. 使用UE4的UMG开发图表显得比较笨拙. 而通过Web插件允许开发者创建丰富的基于Web HTML5的用户界面,它 ...
- 快速入门JavaScript编程语言
目录 JS简介 JS基础 1.注释语法 2.引入js的多种方式 3.结束符号 变量与常量 let和var的区别 申明常量 const 严格模式 use strict 基本数据类型 1.数值类型(Num ...
- SpringBoot 自动装配的原理分析
关于 SpringBoot 的自动装配功能,相信是每一个 Java 程序员天天都会用到的一个功能,但是它究竟是如何实现的呢?今天阿粉来带大家看一下. 自动装配案例 首先我们通过一个案例来看一下自动装配 ...
- 自研ORM框架 实现类似EF Core Include 拆分查询 支持自定义条件、排序、选择
Baozi, I'm Mr.Zhong I like to brush TikTok, I know that anchors like to call it that, haha!Recently, ...
- war包形式安装jenkins
(1)下载war包 输入命令:java -jar jenkins.war --httpPort=8080,更改端口 重新登录之后,输入密码创建用户等完成设置 (2)结合Tomcat安装: 将jenki ...