2012-02-07 99 views
2

我想使用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

回答

9

我懷疑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

相關問題