दिलचस्प पोस्ट
"गैर-स्थिर विधि को एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता" त्रुटि जब मैं एंड्रॉइड पर सूची दृश्य स्क्रॉल करता हूं तो चेकबॉक्स अनचेक होता है सेलेनियम वेबड्राइवर: लोड करने के लिए जावास्क्रिप्ट (जेएस) के साथ जटिल पृष्ठ की प्रतीक्षा करें Appcompat 21 में टूलबार का रंग बदलें तालिका में पंक्तियों और स्तंभों के बीच अवांछित अंतरिक्ष कैसे निकालें? कैसे div की प्रतिशतता चौड़ाई को माता-पिता की तुलना में बनाइए और व्यूपोर्ट नहीं कोणीय में HTTP अनुरोध के दौरान स्पिनर जीआईआई दिखा रहा है पकड़ने और फिर से फेंकने के लिए सर्वश्रेष्ठ प्रथाएं .नेट अपवाद सी ++ 11 में आप अपना स्वयं का पाठक / लेखक लॉक कैसे लागू करेंगे? कैसे जाँचें कि क्या तत्व के पास जावास्क्रिप्ट में कोई भी बच्चा है? इंटरनेट एक्सप्लोरर में 'स्क्रिप्ट' टैग के लिए 'ऑनलोड' हैंडलर कैसे जानूं कि अगर JQuery ने लोड किया है एनपीएम पैकेज को समझना @ -prefix: @ कोणीय / राउटर अजाक्स का उपयोग करके पीडीएफ फाईल को डाउनलोड और खोलें एक अर्रे डुप्लिकेट करने के लिए जावास्क्रिप्ट सबसे तेज़ तरीका – स्लाइस बनाम लूप के लिए

सी # में एक वेबसाइट से एक फाइल कैसे डाउनलोड करें

क्या यह संभव है कि विंडोज़ एप्लिकेशन में किसी वेबसाइट से एक फाइल डाउनलोड हो और उसे एक निश्चित निर्देशिका में रखा जाए?

वेब के समाधान से एकत्रित समाधान "सी # में एक वेबसाइट से एक फाइल कैसे डाउनलोड करें"

वेब क्लायंट क्लास के साथ :

using System.Net; //... WebClient Client = new WebClient (); Client.DownloadFile("http://img.hiwab.com/c%23/stackoverflow-logo-250.png", @"C:\folder\stackoverflowlogo.png"); 

WebClient.DownloadFile उपयोग WebClient.DownloadFile :

 using (WebClient client = new WebClient()) { client.DownloadFile("http://csharpindepth.com/Reviews.aspx", @"c:\Users\Jon\Test\foo.txt"); } 

ज़रूर, आप बस एक HttpWebRequest इस्तेमाल करते हैं

एक बार आपके पास HttpWebRequest सेट अप हो जाने के बाद, आप एक स्ट्रीम StreamWriter (या तो BinaryWriter , या TextWriter माइमप्रकार के आधार पर।) पर प्रतिक्रिया स्ट्रीम सहेज सकते हैं और आपकी हार्ड ड्राइव पर एक फाइल है।

संपादित करें: WebClient बारे में भूल गए यह अच्छा काम करता है जब तक कि आपको केवल अपनी फ़ाइल को प्राप्त करने के लिए GET का उपयोग करने की आवश्यकता नहीं है। यदि साइट को आपको इसके बारे में जानकारी POST करने की आवश्यकता है, तो आपको HttpWebRequest का इस्तेमाल करना होगा, इसलिए मैं अपना जवाब छोड़ रहा हूं

आपको फ़ाइल डाउनलोड करने के दौरान स्थिति जानना चाहिए या अनुरोध करने से पहले क्रेडेंशियल्स का उपयोग करना होगा।

यहां एक उदाहरण दिया गया है जो इन विकल्पों को शामिल करता है:

 Uri ur = new Uri("http://img.hiwab.com/c%23/img.jpg"); using (WebClient client = new WebClient()) { //client.Credentials = new NetworkCredential("username", "password"); String credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes("Username" + ":" + "MyNewPassword")); client.Headers[HttpRequestHeader.Authorization] = $"Basic {credentials}"; client.DownloadProgressChanged += WebClientDownloadProgressChanged; client.DownloadDataCompleted += WebClientDownloadCompleted; client.DownloadFileAsync(ur, @"C:\path\newImage.jpg"); } 

और कॉलबैक के कार्यों को निम्नानुसार लागू किया गया है:

 void WebClientDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { Console.WriteLine("Download status: {0}%.", e.ProgressPercentage); // updating the UI Dispatcher.Invoke(() => { progressBar.Value = e.ProgressPercentage; }); } void WebClientDownloadCompleted(object sender, DownloadDataCompletedEventArgs e) { Console.WriteLine("Download finished!"); } 

लैम्ब्डा नोटेशन: घटनाओं को संभालने के लिए अन्य संभव विकल्प

 client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(delegate(object sender, DownloadProgressChangedEventArgs e) { Console.WriteLine("Download status: {0}%.", e.ProgressPercentage); // updating the UI Dispatcher.Invoke(() => { progressBar.Value = e.ProgressPercentage; }); }); client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(delegate(object sender, DownloadDataCompletedEventArgs e){ Console.WriteLine("Download finished!"); }); 

हम बेहतर कर सकते हैं

 client.DownloadProgressChanged += (object sender, DownloadProgressChangedEventArgs e) => { Console.WriteLine("Download status: {0}%.", e.ProgressPercentage); // updating the UI Dispatcher.Invoke(() => { progressBar.Value = e.ProgressPercentage; }); }; client.DownloadDataCompleted += (object sender, DownloadDataCompletedEventArgs e) => { Console.WriteLine("Download finished!"); }; 

या

 client.DownloadProgressChanged += (o, e) => { Console.WriteLine($"Download status: {e.ProgressPercentage}%."); // updating the UI Dispatcher.Invoke(() => { progressBar.Value = e.ProgressPercentage; }); }; client.DownloadDataCompleted += (o, e) => { Console.WriteLine("Download finished!"); }; 

आप एक वेबसाइट से डेस्कटॉप पर फ़ाइल डाउनलोड करने के लिए इस कोड का उपयोग कर सकते हैं:

 using System.Net; WebClient Client = new WebClient (); client.DownloadFileAsync(new Uri("http://www.Address.com/File.zip"), Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "File.zip"); 

इस उदाहरण को आज़माएं:

 public void TheDownload(string path) { System.IO.FileInfo toDownload = new System.IO.FileInfo(HttpContext.Current.Server.MapPath(path)); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + toDownload.Name); HttpContext.Current.Response.AddHeader("Content-Length", toDownload.Length.ToString()); HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.WriteFile(patch); HttpContext.Current.Response.End(); } 

कार्यान्वयन इस प्रकार किया जाता है:

 TheDownload("@"c:\Temporal\Test.txt""); 

स्रोत: http://www.systemdeveloper.info/2014/03/force-downloading-file-from-c.html

इसके अलावा आप WebClient वर्ग में DownloadFileAsync विधि का उपयोग कर सकते हैं। यह एक विशिष्ट फ़ाइल को डाउनलोड करता है जो निर्दिष्ट URI साथ संसाधन है। इसके अलावा यह विधि कॉलिंग थ्रेड को ब्लॉक नहीं करता है।

नमूना:

  webClient.DownloadFileAsync(new Uri("http://img.hiwab.com/c%23/test.jpg"), "test.jpg"); 

अधिक जानकारी के लिए:

http://csharpexamples.com/download-files-synchronous-asynchronous-url-c/