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

问题描述:

我想使用DotNetZip 1.9读取Asp.Net MVC 3中上传的zip文件。 我已经验证了我收到的HttpPostedFileBase对象没有问题。我可以将它保存到磁盘然后解压缩。但是,首先保存到磁盘看起来很浪费,因为我应该能够直接从内存中解压缩。使用DotNetZip 1.9无法从HttpInputStream读取zip文件

从MSDN中,HttpPostedFileBase.InputStream财产“得到一个指向上传文件读取文件的内容准备Stream对象”。

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

问题从HttpInputStream解压 Problem unzipping from HttpInputStream

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

帮助的人吗? THX

我怀疑ZipFile.IsZipFile方法调用拥有先进的InputStream位置,而当您尝试读取它后,它不再是一个有效的zip文件,因为流位置已经移动。尝试只是验证流是一个有效的zip文件,只是在尝试读取它using子句之前后贴敷

fileData.InputStream.Position = 0; 

。这将在开始时重置流位置。

+0

是的,这是问题。太愚蠢了,我没有注意到它。非常感谢你的帮助! – 2012-02-07 00:25:26

+0

+1谢谢darin – 2013-01-03 09:42:27