在吗,你的C# winform怎么实现从百度云下载文件?
我也把文件放在百度云,创建公有分享,进入分享连接后,点击下载,用下载生生成的连接,但是过段时间就不能用了。...
我也把文件放在百度云,创建公有分享,进入分享连接后,点击下载,用下载生生成的连接,但是过段时间就不能用了。
展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
2个回答
展开全部
你是不是用了多线程,百度云不支持的,必须用单线程,并且下载链接只能用一次,无法断点续传
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然这么多人问,我就写。按道理,百度网盘下载的文件是带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) 就是下载该文件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询