c# winform程序如何通过百度云盘下载文件

shenyanli920208 2016-08-08 05:31:12
我现在需要做一个项目(网络学习平台),项目中会用到一些资源文件(学习课件),我想把这些资源放在百度云盘上,在程序中通过百度云盘的分享地址实现自动下载。请大神职教。。。。
...全文
1128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
拜一刀 2016-08-09
  • 打赏
  • 举报
回复
诶,给下载api的吗?那谁还会用限速的逗比云管家
秋的红果实 2016-08-09
  • 打赏
  • 举报
回复
百度云盘可能和一般下载不同,需要阅读百度云盘使用说明
  • 打赏
  • 举报
回复
引用 3 楼 shenyanli920208 的回复:
我只是需要通过百度云盘分享出来的网址来下载文件,然后总是报403错误。是必须要申请API Key(client_id)与Secret Key(client_secret)和access Token吗?

  public class BaiDuYunDownLoad
    {
       public static void DownLoad(string url, string saveFilePath)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
                request.Referer = url;
                request.Method = "GET";
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
                request.ContentType = "application/octet-stream";
                request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
                request.Timeout = 20*1000;
                request.AllowAutoRedirect = true;
                //request.ClientCertificates.Add(new X509Certificate2(cert_path,cert_password));
                HttpWebResponse response = (HttpWebResponse) request.GetResponse();
  
                Stream responseStream = response.GetResponseStream();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    FileStream fileStream = new FileStream(saveFilePath, FileMode.Create, FileAccess.ReadWrite);
                    if (responseStream != null)
                    {
                        responseStream.Flush();

                        StreamReader sr = new StreamReader(responseStream);
                        string buffer = sr.ReadToEnd();
                        byte[] bt = new UTF8Encoding(true).GetBytes(buffer);
                        fileStream.Write(bt, 0, bt.Length);
                    }
                    fileStream.Close();
                }
                else
                {
                    throw new Exception("服务器返回状态失败,StatusCode:" + response.StatusCode);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw new Exception("无法连接下载地址");
            }

        }
    }
你需要在百度上申请一下开发者账号,然后按照一楼的操作来做
巴士上的邂逅 2016-08-09
  • 打赏
  • 举报
回复
错误码是什么,可以对照这个
引用 3 楼 shenyanli920208 的回复:
我只是需要通过百度云盘分享出来的网址来下载文件,然后总是报403错误。是必须要申请API Key(client_id)与Secret Key(client_secret)和access Token吗?

  public class BaiDuYunDownLoad
    {
       public static void DownLoad(string url, string saveFilePath)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
                request.Referer = url;
                request.Method = "GET";
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
                request.ContentType = "application/octet-stream";
                request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
                request.Timeout = 20*1000;
                request.AllowAutoRedirect = true;
                //request.ClientCertificates.Add(new X509Certificate2(cert_path,cert_password));
                HttpWebResponse response = (HttpWebResponse) request.GetResponse();
  
                Stream responseStream = response.GetResponseStream();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    FileStream fileStream = new FileStream(saveFilePath, FileMode.Create, FileAccess.ReadWrite);
                    if (responseStream != null)
                    {
                        responseStream.Flush();

                        StreamReader sr = new StreamReader(responseStream);
                        string buffer = sr.ReadToEnd();
                        byte[] bt = new UTF8Encoding(true).GetBytes(buffer);
                        fileStream.Write(bt, 0, bt.Length);
                    }
                    fileStream.Close();
                }
                else
                {
                    throw new Exception("服务器返回状态失败,StatusCode:" + response.StatusCode);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw new Exception("无法连接下载地址");
            }

        }
    }
shenyanli920208 2016-08-09
  • 打赏
  • 举报
回复
我只是需要通过百度云盘分享出来的网址来下载文件,然后总是报403错误。是必须要申请API Key(client_id)与Secret Key(client_secret)和access Token吗?

  public class BaiDuYunDownLoad
    {
       public static void DownLoad(string url, string saveFilePath)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
                request.Referer = url;
                request.Method = "GET";
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
                request.ContentType = "application/octet-stream";
                request.Accept = "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
                request.Timeout = 20*1000;
                request.AllowAutoRedirect = true;
                //request.ClientCertificates.Add(new X509Certificate2(cert_path,cert_password));
                HttpWebResponse response = (HttpWebResponse) request.GetResponse();
  
                Stream responseStream = response.GetResponseStream();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    FileStream fileStream = new FileStream(saveFilePath, FileMode.Create, FileAccess.ReadWrite);
                    if (responseStream != null)
                    {
                        responseStream.Flush();

                        StreamReader sr = new StreamReader(responseStream);
                        string buffer = sr.ReadToEnd();
                        byte[] bt = new UTF8Encoding(true).GetBytes(buffer);
                        fileStream.Write(bt, 0, bt.Length);
                    }
                    fileStream.Close();
                }
                else
                {
                    throw new Exception("服务器返回状态失败,StatusCode:" + response.StatusCode);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw new Exception("无法连接下载地址");
            }

        }
    }
ghao0 2016-08-08
  • 打赏
  • 举报
回复
WebClient web = new WebClient(); // web.BaseAddress = "......"; web.DownloadFile(url_1, FileName);
巴士上的邂逅 2016-08-08
  • 打赏
  • 举报
回复
可以调用百度云的Api,看这里

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧