下面是C#中常用的從Internet上下載文件保存到本地的一些方法,沒有太多的技巧。
1.通過 WebClient 類下載文件
1 WebClient webClient = new WebClient(); 2 webClient.Encoding = Encoding.UTF8;
//這里使用DownloadString方法,如果是不需要對文件的文本內容做處理,直接保存,那么可以直接使用功能DownloadFile(url,savepath)直接進行文件保存。 3 string outText = webClient.DownloadString("https://blog.csdn.net/zxf122895/article/details/77853703"); 4 File.WriteAllText("D:\\test1.html", outText);
2. 使用 WebClient 進行圖片下載
主要思路是通過 WebClient 的 DownloadData 方法下載圖片的二進制數據,在通過 MemoryStream 轉換為內存流。最后通過 Image 類的 FromStream 方法獲取 Image 對象,調用 Image 的 Save(savePath,ImageFormat) 方法保存即可。
1 WebClient webClient = new WebClient(); 2 Byte[] imgData = webClient.DownloadData("imgurl"); 3 Stream ms = new MemoryStream(imgData); 4 ms.Position = 0; 5 Image img = Image.FromStream(ms); 6 img.Save(@"D:\111.jpg", ImageFormat.Jpeg);
3.通過 HttpClient 方法
1 private static async Task<string> GetMethod(string url) 2 { 3 using (HttpClient httpClient = new HttpClient()) 4 { 5 HttpResponseMessage response = await httpClient.GetAsync(url); 6 response.EnsureSuccessStatusCode();
//同樣的,在此處可通過 ReadAsStreamAsync()方法,以流的方式下載指定文件(或者將網絡流通過 MemoryStream 轉換為內存流,再轉換為byte進行存儲或保存),再通過 Image 對象從流中讀取圖片文件。 7 string retString = await response.Content.ReadAsStringAsync(); 8 File.WriteAllText("D:\\index.html", retString); 9 return retString; 10 } 11 }
4.HttpWebRequest 方式
1 HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://Room/6/2/00/0027a4a8-23e5-42e9-ae95-55f4c99fb8db.html"); 2 httpWebRequest.Method = "GET"; 3 using (WebResponse response = httpWebRequest.GetResponse()) 4 { 5 Stream stream = response.GetResponseStream(); 6 StreamReader streamReader = new StreamReader(stream, Encoding.UTF8); 7 File.WriteAllText("D:\\123456.html", streamReader.ReadToEnd()); 8 }