2012-02-07 2 views
2

DotNetZip 1.9를 사용하여 업로드 된 zip 파일을 Asp.Net MVC 3에서 읽으려고합니다. 수신 한 HttpPostedFileBase 객체가 이미 유효하다는 것을 이미 확인했습니다. 디스크에 저장 한 다음 압축을 풀 수 있습니다. 그러나 디스크에 저장하는 것은 메모리에서 직접 압축을 풀 수 있어야하므로 처음에는 낭비였습니다.DotNetZip을 사용하여 HttpInputStream에서 zip 파일을 읽을 수 없습니다. 1.9

MSDN에서 HttpPostedFileBase.InputStream 속성은 "파일의 내용을 읽을 준비를 위해 업로드 된 파일을 가리키는 Stream 개체를 가져옵니다."

DetNetZip 참조에 따르면 ZipFile.Read()는 Stream 개체를 허용 할 수 있습니다. 그래서 그것을 시도하고 DotNetZip BadReadException 던졌습니다. 문제를 보여주는 스크린 샷을 첨부했습니다. HttpInputStream에서의 InputStream의 Problem unzipping from HttpInputStream

값의 압축을 해제

문제, 길이는 업로드 된 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

그래, 그게 문제 였어. 바보 같아서 내가 눈치 채지 못 했어. 도와 주셔서 정말로 고맙습니다! –

+0

+1 감사합니다. –