吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 599|回复: 3
收起左侧

[已解决] 视频下载问题,异常的奇怪,有没有遇到过

[复制链接]
yigengshop 发表于 2024-8-1 18:55
1、先上代码
        public void DownloadFile(string URL, string filename, int i)
        {
            float percent = 0;
            try
            {
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                ServicePointManager.ServerCertificateValIDAtionCallback = (sender, certificate, chain, errors) => true;

                System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);


                System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
                //不能下载的电脑,ContentLength此处一直返回0
                long totalBytes = myrp.ContentLength;
                System.IO.Stream st = myrp.GetResponseStream();
                System.IO.Stream so = new System.IO.FileStream(filename, System.IO.FileMode.Create);
                long totalDownloadedByte = 0;
                byte[] by = new byte[1024];
                int osize = st.Read(by, 0, (int)by.Length);
                while (osize > 0)
                {
                    totalDownloadedByte = osize + totalDownloadedByte;
                    System.Windows.Forms.Application.DoEvents();
                    so.Write(by, 0, osize);
                    osize = st.Read(by, 0, (int)by.Length);
                    percent = (float)totalDownloadedByte / (float)totalBytes * 100;
                    this.dataGridView1.Rows[i].Cells["Column5"].Value = percent.ToString() + "%";
                    System.Windows.Forms.Application.DoEvents(); //必须加注这句代码,否则label1将因为循环执行太快而来不及显示信息
                }
                so.Close();
                st.Close();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine("下载异常:" + ex.Message.ToString() + "异常路径:" + filename + "异常地址:" + URL);
                MessageBox.Show("下载失败:原因:"+ex.Message.ToString()+ex.TargetSite.ToString());
            }
        }
2、问题描述:用上述方法通过远程地址下载视频文件,在我电脑使用正常,但是软件打包后,发给客户,部分客户使用正常,部分无法下载,经过排查,不能使用的人在调用此方法下载时候,myrp.ContentLength一直为0,导致了视频无法下载,现在的问题是部分电脑可以,部分电脑不可以。
3、开发语言:c#。
4、已经排除的问题:防火墙,已经测试与他无关;下载地址,下载地址都是一样的,也排除;网络问题,网络都是一样无代{过}{滤}理排除。
5、请教各位还有无其他因素会导致此种情况,或者有无其他更好的下载方法。【备注:用了aria2c.exe下载器情况也是一样的】

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

linuxdev 发表于 2024-8-1 19:48
你检查一下是不是客户端本地的网络的IP被机房网络拦了。部分IP的爬虫较多,机房和网站管理对这些IP的风控力度较大。
andyle 发表于 2024-8-1 20:03
是不是IP地址本身被屏蔽了,有些网址下载多了就被限制了,换个可能就可以了
 楼主| yigengshop 发表于 2024-8-2 16:10
linuxdev 发表于 2024-8-1 19:48
你检查一下是不是客户端本地的网络的IP被机房网络拦了。部分IP的爬虫较多,机房和网站管理对这些IP的风控力 ...

使用net的downloader库解决了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-14 00:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表