无法使用DotNetZip 1.9从HttpInputStream中读取zip文件

时间:2012-02-07 00:13:30

标签: 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的值,Length与上传的zip文件的值相匹配 Value of the InputStream, Length matches that of the uploaded zip file

帮助任何人? THX

1 个答案:

答案 0 :(得分:9)

我怀疑ZipFile.IsZipFile方法调用已提升您的InputStream位置,当您稍后尝试阅读它时,由于流位置已移动,因此它不再是有效的zip文件。尝试坚持

fileData.InputStream.Position = 0;

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

相关问题