使用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解压
值的InputStream的,长度相匹配的是,上传的zip文件
帮助的人吗? THX
答
我怀疑ZipFile.IsZipFile
方法调用拥有先进的InputStream
位置,而当您尝试读取它后,它不再是一个有效的zip文件,因为流位置已经移动。尝试只是验证流是一个有效的zip文件,只是在尝试读取它using
子句之前后贴敷
fileData.InputStream.Position = 0;
。这将在开始时重置流位置。
是的,这是问题。太愚蠢了,我没有注意到它。非常感谢你的帮助! – 2012-02-07 00:25:26
+1谢谢darin – 2013-01-03 09:42:27