C# 实现下载文件并自动检测文件名(带进度反馈)

作者: 小古 分类: C# NET技术 发布时间: 2016-7-23 ė10818 次浏览 63 条评论

表示最近公司升级面板,要搞个远程下载功能,本来想偷懒直接百度Copy份代码直接用,结果.........找了好几页找不到符合要求的.........

无奈,只能自己动手写了

其实要求很简单就是下载远程文件并自动检测文件名称,但不知为啥BD上找不到..........

好了,不吹水了,直接看代码


        private void HttpDownloadFile(string url, string path, bool overwrite, Action<string, long, long> callback = null)
        {
            // 设置参数
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            //发送请求并获取相应回应数据
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //获取文件名
            string fileName = response.Headers["Content-Disposition"];//attachment;filename=FileName.txt
            if (string.IsNullOrEmpty(fileName))
                fileName = response.ResponseUri.Segments[response.ResponseUri.Segments.Length - 1];
            else
                fileName = fileName.Remove(0, fileName.IndexOf("filename=") + 9);
            //直到request.GetResponse()程序才开始向目标网页发送Post请求
            using (Stream responseStream = response.GetResponseStream())
            {
                long totalLength = response.ContentLength;
                //创建本地文件写入流
                using (Stream stream = new FileStream(Path.Combine(path, fileName), overwrite ? FileMode.Create : FileMode.CreateNew))
                {
                    byte[] bArr = new byte[1024];
                    int size;
                    while ((size = responseStream.Read(bArr, 0, bArr.Length)) > 0)
                    {
                        stream.Write(bArr, 0, size);
                        callback?.Invoke(fileName, totalLength, stream.Length);
                    }
                } 
            }
        }

我相信大部分大部分童鞋一眼就能看懂各个参数意思,不过为了避免部分童鞋看不懂我还是说下吧

照旧用表格

HttpDownloadFile
url string 远程文件网址
path string 本地保存路径
overwrite bool 当本地路径存在同名文件时是否覆盖
callback Action<string, long, long> 实时状态回掉函数
回掉函数参数说明
callback
参数1
string 文件名
参数2
long 文件总大小
参数3 long 已下载大小


本文出自 小古Blog,转载时请注明出处及相应链接。

本文永久链接: http://blog.chdz1.com/?post=252

|

3条评论

  1. 墨雪飘影 2019-10-24 21:05

    文件名乱码。几个小时了,没解决回复

  1. 足球比分 2017-05-26 23:37

    我也只能找一个现成的哈。。回复

  1. 深圳装修公司 2016-10-19 01:21

    啊哈,我每次都只能找现成的用。回复

发表评论:

电子邮件地址不会被公开。 必填项已用*标注

Ɣ回顶部
sitemap