c# - 无法使用 DotNetZip 1.9 从 HttpInputStream 读取 zip 文件

标签 c# asp.net asp.net-mvc-3 dotnetzip

我正在尝试使用 DotNetZip 1.9 读取 Asp.Net MVC 3 中上传的 zip 文件。 我已经验证我收到的 HttpPostedFileBase 对象是好的。我可以将它保存到磁盘然后解压缩。但是,首先保存到磁盘似乎很浪费,因为我应该能够直接从内存中解压缩。

来自 MSDN,HttpPostedFileBase.InputStream 属性“获取指向上传文件的 Stream 对象,以准备读取文件内容”。

根据 DetNetZip 引用,ZipFile.Read() 可以接受 Stream 对象。所以我尝试了一下,DotNetZip 抛出了 BadReadException。我附上了显示问题的屏幕截图。

从 HttpInputStream 解压缩时出现问题 Problem unzipping from HttpInputStream

InputStream 的值,长度与上传的 zip 文件匹配 Value of the InputStream, Length matches that of the uploaded zip file

帮助任何人?谢谢

最佳答案

我怀疑 ZipFile.IsZipFile 方法调用提高了您的 InputStream 位置,当您稍后尝试读取它时,它不再是一个有效的 zip 文件,因为流位置已经移动。试试贴一个

fileData.InputStream.Position = 0;

就在验证流是一个有效的 zip 文件之后,就在您尝试读取它的 using 子句之前。这将在开始时重置流位置。

关于c# - 无法使用 DotNetZip 1.9 从 HttpInputStream 读取 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169278/

相关文章:

c# - CUDA 中 2D 数组的 1D FFT 变换

c# - C# 中的提交和回滚

asp.net - 如何将包含两个项目的解决方案部署到Azure App Service?

ASP.NET CssMinify,HttpContextBase

asp.net - 如何在 ASP.NET 中的 Web 应用程序之间共享用户控件?

c# - 在 ASP.Net MVC 中将 JSON 转换为 C# 类

c# - 无法让子类工作

asp.net-mvc-3 - MVC脚手架问题

javascript - Asp.net MVC 3.0 中的 JQuery 模式和最佳实践

c# - 使用 LINQ 将 DateTime?[] 中的 null 替换为 DateTime.MaxValue