1 /// <summary> 2 /// 从Http下载文件 3 /// </summary> 4 /// <param name="url">文件链接</param> 5 /// <param name="fileName">保存文件路径名</param> 6 /// <returns></returns> 7 public static string HttpDownFile(string url,string fileName) 8 { 9 // url = "https://paper.ysbang.cn/data/img/report/user/2018/07/16/5b4c078549c55_6531.jpg"; 10 var request = (HttpWebRequest)WebRequest.Create(url); 11 12 request.Method = "GET"; 13 using (var webRes = request.GetResponse()) 14 { 15 var length = (int)webRes.ContentLength; 16 var response = webRes as HttpWebResponse; 17 var stream = response?.GetResponseStream(); 18 var contentDisposition = response?.Headers["Content-Disposition"]; 19 var match = Regex.Match(contentDisposition ?? string.Empty, @"(?is)filename=""([^""]+)""s*Content-Type:([^;]+)"); 20 fileName +="_"+ match.Groups[1].Value; 21 22 23 //读取到内存 24 var stmMemory = new MemoryStream(); 25 var buffer = new byte[length]; 26 int i; 27 //将字节逐个放入到Byte中 28 while (stream != null && (i = stream.Read(buffer, 0, buffer.Length)) > 0) 29 { 30 stmMemory.Write(buffer, 0, i); 31 } 32 stmMemory.ToArray();//文件流Byte 33 var fs = new FileStream(fileName, FileMode.OpenOrCreate); 34 stmMemory.WriteTo(fs); 35 stmMemory.Close(); 36 fs.Close(); 37 return fileName; 38 } 39 }