我进行了以下设置:
- Win2008服务器
- Ionic.zip 参考模块
- 用于构建 zip 文件的单独驱动器
- .NET 4.0
Web 应用程序即时构建 zip 包,并允许客户端下载该包。
该系统一直运行良好......直到现在。
最近我们添加了一些较大的文件(2GB 到 11GB),在下载到客户端之前,所有这些文件都需要打包在一个包中。最初我把这个系统设置为全部发生在 C: 上(一个错误)。立即,尤其是对于较大的文件,我开始收到“磁盘上没有足够的空间”错误。我做的第一件事是将系统转移到 100GB 独立驱动器上运行 (K:)。现在这些文件已发布到 Intranet 上的生产中,我仍然收到这些错误。
- 我安排了一项每晚清理驱动器的任务,因此即使是 100GB,我也不应该出现错误
- C:和K:都有足够的空间
- 我还不知道是 C:(未知的临时文件夹?)还是 K: 已满
- 更新 - 查看事件日志,它是 K: 正在填满,但是当我检查它时,它没有满...所以我假设临时文件问题...或者?
有没有人可以阐明这一点或就解决正在发生的问题提供建议?
编辑 - - - - - - - - - - - -
我认为我所调用的文件大小可能与压缩方法有关。我现在看到其他错误,如下所示:
压缩或未压缩的大小,或偏移量超过最大值。考虑在 ZipFile 实例上设置 UseZip64WhenSaving 属性。
我尝试添加行zip.CompressionMethod = Zip64Option.AsNecessary
认为 zip64 是必要的,但后来我得到了错误Unsupported compression method
。我不知道如何处理这些新信息。我认为 ZipDotNet 可以处理这一切。
由于用户正在尝试下载此文件,这变得越来越紧迫。我现在正在开发一个补丁作为解决方法。
更多编辑--------------------
当我意识到常规 zip 的大小限制为 4GB 时,有一种 DUH 时刻。 Zip64 的大小限制要大得多。
我添加了这一行zip.UseZip64WhenSaving = True
我的代码似乎已经解决了这个问题。到目前为止,没有任何问题。
该解决方案围绕不关注 zip 文件大小限制而展开。
当使用 DotNetZip 压缩大尺寸文件时,您将在 ASP.NET 编码中遇到如下错误:
- 磁盘空间不足
- 压缩或未压缩的大小,或偏移量超过最大值。考虑在 ZipFile 实例上设置 UseZip64WhenSaving 属性
当您看到这些错误时,最好通过添加以下行来更改您的 asp 代码:
[yourZipReference].UseZip64WhenSaving = Zip64Option.Always
这将更改您的代码以将文件保存为 zip64 格式,因此您可能需要在进行此更改之前进行文件大小检查。
还有另一行:
[yourZipReference].CompressionMethod = CompressionMethod.BZip2;// or CompressionMethod.Deflate or CompressionMethod.None
这将导致模块使用适合该情况的 zip 压缩方法,但我还没有测试过这个方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)