2015-10-26 2 views
0

Когда я пытаюсь извлечь «test.png», я получаю следующую ошибку: этот поток не поддерживает операции поиска.DotNetZip - этот поток не поддерживает операции поиска

Также можно использовать подстановочный знак? var entry = zipout ["* .png"]; Я не буду знать то же самое при потоковой передаче.

  var request = (HttpWebRequest)WebRequest.Create("http://www.xxx.xxxx.com/xxx/xxxx?key=ndXqH2fXzePomlVoX39trxUf%2FV1bfN0rZsHsTyEvI%2F0%3D&labelFormat=png"); 

      using (var ms = new MemoryStream()) 
      { 
       using (var response = (HttpWebResponse)request.GetResponse()) 
       { 
        using (var stream =response.GetResponseStream()) 
        { 
        using (var zipout = ZipFile.Read(stream)) 
        { 
         var entry = zipout["test.png"]; 
         entry.Extract(ms); 
        } 
        } 
       } 
      } 

Обновлено

  using (var response = request.GetResponse()) 
      { 
       using (var responseStream = response.GetResponseStream()) 
       { 
        using (var stream = new MemoryStream()) 
        { 
         if (responseStream != null) 
         { 
          responseStream.CopyTo(stream); 
         } 

         using (var zipout = ZipFile.Read(stream)) 
         { 
          using (var ms = new MemoryStream()) 
          { 
           var entry = zipout["test.png"]; 
           entry.Extract(ms); 
          } 
         } 
        } 
       } 
      } 

Новая ошибка: Сообщение = "Не могу прочитать, что в ZipFile"

+1

Попробуйте сохранить ответ на диск (или в памяти), прежде чем использовать его в ' ZipFile.Read'. – Glorfindel

ответ

0
var request = (HttpWebRequest)WebRequest.Create("var request = (HttpWebRequest)WebRequest.Create("http://www.xxx.xxxx.com/xxx/xxxx?key=ndXqH2fXzePomlVoX39trxUf%2FV1bfN0rZsHsTyEvI%2F0%3D&labelFormat=png"); 

      using (var response = request.GetResponse()) 
      { 
       using (var responseStream = response.GetResponseStream()) 
       { 
        using (var stream = new MemoryStream()) 
        { 
         if (responseStream == null) 
         { 
          return; 
         } 

         responseStream.CopyTo(stream); 
         stream.Position = 0; 

         using (var zipout = ZipFile.Read(stream)) 
         { 
          using (var ms = new MemoryStream()) 
          { 
           var entry = zipout["test.png"]; 

           if (entry != null) 
           { 
            entry.Extract(ms); 
           } 
           else 
           { 
            return; 
           } 
          } 
         } 
        } 
       } 
      } 
Смежные вопросы