通过两种方式:
HttpWebRequest
WebClient
废话不多说,直接上代码
/// <summary> /// 通过地址获取文件及名称(含后缀) /// </summary> /// <param name="url">文件下载地址</param> /// <param name="stream">文件流</param> public static string GetFileName(string url, out Stream stream) { string fileName = string.Empty; stream = null; // 方式1 : HttpWebRequest HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.KeepAlive = false; request.AllowAutoRedirect = false; request.Timeout = 10000; request.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.PartialContent)//返回为200或206 { var contentDescriptionHeader = response.GetResponseHeader("Content-Disposition"); if (!string.IsNullOrEmpty(contentDescriptionHeader)) { System.Net.Mime.ContentDisposition contentDisposition = new System.Net.Mime.ContentDisposition(contentDescriptionHeader); fileName = contentDisposition.FileName; //正则表达式的方式获取 //fileName = System.Text.RegularExpressions.Regex.Match(contentDescriptionHeader, @"(?<=filename="")([\s\S]+)(?="")", System.Text.RegularExpressions.RegexOptions.IgnoreCase).Value; } stream = response.GetResponseStream(); } } // 方式2 :WebClient using (var client = new WebClient()) { //client.OpenRead(url); var data = client.DownloadData(url); var contentDescriptionHeader = client.ResponseHeaders["Content-Disposition"].ToString(); if (!string.IsNullOrEmpty(contentDescriptionHeader)) { System.Net.Mime.ContentDisposition contentDisposition = new System.Net.Mime.ContentDisposition(contentDescriptionHeader); fileName = contentDisposition.FileName; //正则表达式的方式获取 //fileName = System.Text.RegularExpressions.Regex.Match(contentDescriptionHeader, @"(?<=filename="")([\s\S]+)(?="")", System.Text.RegularExpressions.RegexOptions.IgnoreCase).Value; } foreach (var b in data) { stream.WriteByte(b); } } return fileName; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律