我正在尝试使用 DotNetZip 1.9 读取 Asp.Net MVC 3 中上传的 zip 文件。 我已经验证我收到的 HttpPostedFileBase 对象是好的。我可以将它保存到磁盘然后解压缩。但是,首先保存到磁盘似乎很浪费,因为我应该能够直接从内存中解压缩。
来自 MSDN,HttpPostedFileBase.InputStream 属性“获取指向上传文件的 Stream 对象,以准备读取文件内容”。
根据 DetNetZip 引用,ZipFile.Read() 可以接受 Stream 对象。所以我尝试了一下,DotNetZip 抛出了 BadReadException。我附上了显示问题的屏幕截图。
从 HttpInputStream 解压缩时出现问题
InputStream 的值,长度与上传的 zip 文件匹配
帮助任何人?谢谢
最佳答案
我怀疑 ZipFile.IsZipFile
方法调用提高了您的 InputStream
位置,当您稍后尝试读取它时,它不再是一个有效的 zip 文件,因为流位置已经移动。试试贴一个
fileData.InputStream.Position = 0;
就在验证流是一个有效的 zip 文件之后,就在您尝试读取它的 using
子句之前。这将在开始时重置流位置。
关于c# - 无法使用 DotNetZip 1.9 从 HttpInputStream 读取 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169278/