在吗,你的C# winform怎么实现从百度云下载文件?

我也把文件放在百度云,创建公有分享,进入分享连接后,点击下载,用下载生生成的连接,但是过段时间就不能用了。... 我也把文件放在百度云,创建公有分享,进入分享连接后,点击下载,用下载生生成的连接,但是过段时间就不能用了。 展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
meieieme6ede
2015-05-22 · TA获得超过315个赞
知道小有建树答主
回答量:524
采纳率:0%
帮助的人:347万
展开全部
你是不是用了多线程,百度云不支持的,必须用单线程,并且下载链接只能用一次,无法断点续传
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者zUzVB1Sl31
2018-12-21 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

既然这么多人问,我就写。按道理,百度网盘下载的文件是带Token的,这些东西看不到,你就要借助浏览器去找,不要使用E,其他的都可以,点一下下载,在浏览器让文件下载,然后周到浏览器下载内容,右键复制那个地址,就是你的文件真实地址。

这个地址你用HTML直接herf="....";不使用IE去打开点击都会把文件下载下来。用C#代码可以这么写

        public void HttpDownload(string url, string path)
        {
            string tempPath = System.IO.Path.GetDirectoryName(path) + @"\temp";
            System.IO.Directory.CreateDirectory(tempPath);  //创建临时文件目录
            string tempFile = tempPath + @"\" + System.IO.Path.GetFileName(path) + ".temp"; //临时文件
            if (System.IO.File.Exists(tempFile))
            {
                System.IO.File.Delete(tempFile);    //存在则删除
            }
            try
            {
                FileStream fs = new FileStream(tempFile, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
                // 设置参数
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                //发送请求并获取相应回应数据
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求
                Stream responseStream = response.GetResponseStream();
                //创建本地文件写入流
                byte[] bArr = new byte[1024];
                int size = responseStream.Read(bArr, 0, (int)bArr.Length);
                while (size > 0)
                {
                    fs.Write(bArr, 0, size);
                    size = responseStream.Read(bArr, 0, (int)bArr.Length);
                }
                fs.Close();
                responseStream.Close();
                if (System.IO.File.Exists(path))
                {
                    System.IO.File.Delete(path);    //存在则删除
                }
                else
                {
                    System.IO.File.Move(tempFile, path);
                }
                MessageBox.Show("done!");
            }
            catch(Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
        void load(string path)
        {
            FolderBrowserDialog fo = new FolderBrowserDialog();
            fo.RootFolder = Environment.SpecialFolder.Desktop;
            fo.ShowNewFolderButton = true;
            if (fo.ShowDialog() == DialogResult.OK)
            {
                HttpDownload(path, fo.SelectedPath + @"\" + System.IO.Path.GetFileName(path));
            }
        }

load(你复制的url)     就是下载该文件。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式