问题标签 [dotnetzip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3955 浏览

asp.net-mvc - ASP.NET MVC:如何从流中返回文件

我正在尝试返回一个压缩文件

但作为响应,它返回一个错误(在 XML 中):

XML 解析错误:找不到元素位置:moz-nullprincipal:{122aa411-1418-43f5-b950-4347af7c7217} 第 1 行,第 1 列:

我的回复有什么问题(对于我使用 DotNetZip 的 zip 文件)?

0 投票
0 回答
1245 浏览

c# - DotNetZip 阻塞文件

有人能解释为什么 DotNetZip 会在文件上旋转它的轮子吗?我有这个文件,它受版权保护且不可分发,不会被压缩。我可以获取该文件的早期版本,也可以获取更高版本的文件,它会很好地压缩。

zip 实用程序不应该关心版本,所以我假设它认为文件以某种方式损坏。我该如何调试这个问题?当我单步执行代码时,问题不会发生,但如果我让它运行,它会在保存这个特定文件时停止。这是库中的代码:

如果我在该循环中放置一个断点并让它单独保存每个文件,那么当它看到“坏文件”时它不会阻塞。

有什么想法吗?我将不胜感激!

编辑1:

为了清楚起见,当我说“窒息”时,我的意思是它进入某种无限循环,并且不会继续压缩“坏文件”并移动到其余部分。此外,这是一个被很多人使用的文件,所以它不应该是损坏的。

编辑2:

我把它缩小到以下几点:

该压缩模式会导致问题。我很确定这是某种错误。另一种压缩方法 Bzip2 非常慢。我不确定我将如何解决这个问题。

编辑 3:

DotNetZip 确实很奇怪。我通过将压缩级别调整为此来修复它:

这解决了问题,但几分钟后我又回来了,它不再起作用了。Bzip2 仍然有效,但就像我之前所说的,它非常慢。所以,我开始弄乱 ZipFile API 的其他部分,并添加了以下内容:

这使它现在可以工作。不知道真正的bug是什么?

0 投票
2 回答
191 浏览

c# - 通过遍历数组来归档每个字符串

我目前正在制作一个允许用户输入最多 6 个目录的软件,每个目录都保存为一个字符串(在一个数组中),然后循环用于检查数组以及任何不为空的内容,即实际上分配目录意味着将其压缩到自己的存档中。这是我到目前为止的代码。

我要做的是将给定位置的第一个用户保存到 tmpZip0.7z,将第二个用户保存到 tmpZip1.7z 等等,但目前它所做的只是将每个目录添加到 tmpZip0.zip。


另外作为旁注,我将如何在选择要存档的目录之后命名每个存档?

我目前正在使用 DotNetZip (Ionic.Zip) dll。

我希望我提供了足够的信息。

0 投票
2 回答
2911 浏览

c# - 使用 dotnetzip 在 zip 文件中创建虚拟目录树

我正在尝试从代码创建一个 zip 文件,我正在使用dotnetzip

我想在磁盘上不存在的文件夹中创建一个目录树。我该怎么做呢?

我尝试过使用AddDirectory,但这似乎想在磁盘上找到目录。我也尝试过 AddEntry 但这需要一些内容。

我的文件使用 FileStream 选项存储在 SQL Server 中,并在那里按层次结构组织。

我编写了这个递归方法来做到这一点,但 AddDirectory 行不起作用。

0 投票
1 回答
3569 浏览

c# - 解压 C# 后运行自解压 exe - DotNetZip

我正在尝试创建一个自解压 exe。创建它是没有问题的。我面临的问题是

  • 设置exe所在的解压路径
  • 运行提取的exe。

对于第二部分,很可能我必须使提取路径正确。我正在使用DotNetZipLibrary中的以下修改代码

0 投票
2 回答
1664 浏览

c# - 使用 dotnetzip 库压缩流时文件损坏

文件已创建,大小似乎还可以,但是当我双击它时,它说它的格式错误或文件已损坏。

这是我正在使用的代码

然后在调用方法中

getDocument() 在内部调用 Compress

最后那个方法

有任何想法吗?提前致谢!吉列尔莫。

0 投票
2 回答
293 浏览

dotnetzip - DotNetZip 性能问题,但仅在一台特定服务器上

DotNetZip 库有一个奇怪的性能问题。

在应用程序(在 asp.net 下运行)中,我从数据库中读取一组文件,并将它们即时打包成一个 zip 文件供用户下载。

在我的开发笔记本电脑上一切正常。一个大约 10MB 的 zip 文件,默认压缩率大约需要 5 秒才能完成。但是,在客户的开发服务器上,压缩同一组文件大约需要 1-2 分钟。我什至经历了更长的时间,长达几分钟。压缩运行时 CPU 利用率为 100%,否则保持在 0% 左右,因此不是由于过载。

更有趣的是,在生产服务器上,大约需要 20 秒才能完成。

我应该从哪里开始寻找?

一些硬件规格:

我的笔记本电脑

在具有 2 个内核和 4GB RAM 的专用虚拟机上运行的开发环境。

  • 酷睿 i5 M540 2,5GHz
  • 8 GB 内存
  • Win7

开发服务器

根据我的电脑上的属性对话框(可能是虚拟化的)

  • 英特尔至强 5160 3GHz
  • 540MB 内存
  • 视窗 2003 服务器

任务管理器报告单核

生产服务器

根据我的电脑上的属性对话框(可能是虚拟化的)

  • 氙气 5160 3GHz
  • 512MB 内存
  • 视窗 2003 服务器

任务管理器报告双核

更新 服务器正在 VMWare 主机上运行。发现隐藏在任务栏中的 VMWare 图标。

0 投票
3 回答
5985 浏览

c# - DotNetZip 从其他 zip 的子集创建 zip

我有一个很大的 zip 文件,我需要将其拆分为多个 zip 文件。在我现在创建的方法中,我有一个 List 对象。

这是我得到的代码:

这是我在 save() 调用中遇到的错误:

{Ionic.Zlib.ZlibException:Ionic.Zlib.InflateManager.Inflate(FlushType flush) 在 Ionic.Zlib.ZlibCodec.Inflate(FlushType flush) 在 Ionic.Zlib.ZlibBaseStream.Read(Byte [] Ionic.Zlib.DeflateStream.Read(Byte[] buffer, Int32 offset, Int32 count) at Ionic.Crc.CrcCalculatorStream.Read(Byte[] buffer, Int32 offset, Int32 count) at Ionic .Zip.SharedUtilities.ReadWithRetry(Stream s, Byte[] buffer, Int32 offset, Int32 count, String FileName) at Ionic.Zip.ZipEntry._WriteEntryData(Stream s) at Ionic.Zip.ZipEntry.Write(Stream s) at Ionic .Zip.ZipFile.Save() 在 Ionic.Zip.ZipFile.Save(Stream outputStream) 在

我究竟做错了什么?

0 投票
2 回答
4836 浏览

asp.net - DotNetZip 库“拒绝访问路径”

我正在尝试创建一个 zip 文件并使用 ASP.NET 应用程序中的 DotNetZip 库保存它。但由于某种原因,我得到了一个

访问路径被拒绝

当我尝试保存它时出错。

我将其更改TempFileFolder为另一个文件夹并授予了权限。仍然没有运气。

我发现了一个问题,但答案对我没有帮助。

从上述问题中,一个答案提到:

此外,您示例中的 tempFilePath 不包含完整路径,可能是它试图将 ZIP 保存到与您期望的文件夹不同的文件夹中(并已分配权限)?

即使我提到了,如何确定它试图保存到哪个文件TempFileFolderD:\temp\

有什么想法吗?

0 投票
1 回答
747 浏览

c# - DotNetZip - 如何在不创建单独文件的情况下保存回原始流

我正在一个系统上工作,我有一个流(可搜索),我从中读取 ZIP 文件,然后将修改后的 ZIP 文件写回该流。这样做会导致文件损坏。这可以使用以下代码进行演示: