2011-01-22 13 views
13

kullandığım HTTP GET bir C# kodu aynı indir (yukarıdaki gibi aynı GET yöntemi) yapmaya çalıştığınızda, Şimdi, https://example.com/up/DBID/a/rRID/eFID/vVID gibi bir şey (değil tam URL)C# dosyasını zip dosyasından nasıl indirebilirim?

tarayıcıda bir zip dosyası indiren masaüstü uygulaması, indirilen zip dosyası geçerli bir arşiv dosyası değildir. Bu dosyayı not defterinde açtığımda, bir miktar HTML sayfasıydı.

Sanırım bazı üstbilgileri doğru şekilde ayarlamıyorum. Örneklere baktım. Birkaç wrt yüklemesi buldum, ancak indirme için hiçbir şey görmedim.

Kod: Eğer bir ikili Zip dosyasını işlemek için bir StreamWriter : TextWriter kullandıkları için

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "GET"; 
request.ContentType = "application/zip"; 
try 
{ 
    HttpWebResponse res = (HttpWebResponse)request.GetResponse(); 
    using (StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default)) 
    { 
     StreamWriter oWriter = new StreamWriter(@"D:\Downloads\1.zip"); 
     oWriter.Write(sr.ReadToEnd()); 
     oWriter.Close(); 
    } 
    res.Close(); 
} 
catch (Exception ex) 
{ 
} 
+4

Bu soruyu 'çalışmıyor' bir tahmin edilemeyen olduğunu. Posta kodu, dosyayı bir hex görüntüleyicide açtığınızda gördüğünüz belgeyi. –

cevap

37

Temelde bu. Bir StreamWriter metni bekler ve bir Kodlama uygular. Ve basit ASCII Encoder bile geçersiz satır sonu olduğunu düşündüklerini 'düzeltmeye' çalışabilir. Sen sadece 2 astar için WebClient kullanabilirsiniz

using (var client = new WebClient()) 
    { 
    client.DownloadFile("http://something", @"D:\Downloads\1.zip"); 
    } 
+0

Oh evet, orada aynı sorunu görebiliyorum. –

+0

+1 beni dövdü - @Al: Bunu bir zip dosyasıyla test ettim ve gayet iyi çalışıyor, dosyanın kendisinin bozuk olmadığından emin misin? – BrokenGlass

+0

WebClient, aynı türde bir zip dosyası da oluşturdu. – Merrin

7

:

Sen ile tüm kod değiştirebilirsiniz

using(WebClient wc = new WebClient()) 
{ 
    wc.DownloadFile(url, @"D:\Downloads\1.zip"); 
} 
+0

Kısa ve basit. Bu tür programlamalardan hoşlanıyorum. +1 sizin için –

+1

@anvarbekraupov: Ben bir 'using' ifadesini kullanıyorum - daha sert görün – BrokenGlass

+0

@BrokenGlass, benim indirgeme yerine +1 ile özür dilerim! –