Не удается прочитать zip-файл из HttpInputStream с помощью DotNetZip 1.9 - PullRequest
2 голосов
/ 07 февраля 2012

Я пытаюсь использовать DotNetZip 1.9 для чтения загруженного zip-файла в Asp.Net MVC 3. Я уже проверил, что получаемый мной объект 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 Ответ

9 голосов
/ 07 февраля 2012

Я подозреваю, что вызов метода ZipFile.IsZipFile продвинул вашу позицию InputStream, и когда вы попытаетесь прочитать его позже, он больше не будет действительным zip-файлом, так как позиция потока изменилась. Попробуйте вставить

fileData.InputStream.Position = 0;

сразу после проверки того, что поток является допустимым zip-файлом, и непосредственно перед предложением using, в котором вы пытаетесь его прочитать. Это сбросит позицию потока в начале.

...