写点什么

通过接口百度网盘下载文件

作者:为自己带盐
  • 2021 年 12 月 11 日
  • 本文字数:1124 字

    阅读完需:约 4 分钟

之前关于怎么接入百度网盘开放平台已经有了一些介绍,然后上次主要聊了聊上传,这篇来聊聊下载,而关于授权之类的操作,就不多说了。

一、先手动尝试走通下载流程

1.获取前置参数 fs_id

要获取这个参数,首先要得到文件的基本信息,可以通过列表接口或者搜索接口来获取,接口地址:https://pan.baidu.com/rest/2.0/xpan/file?method=search。通过响应内容中的 fs_id 这个参数就可以去获取 dlink 了


2.获取 dlink

获取 dlink 了之后,我们就可以去下载这个文件了,注意下载的时候这个 dlink 中也要加上 access_token 参数才可以下载,且 dlink 是有有效期的,一般是 8 个小时内有效(绝大多数文件 8 小时内都能下载完成吧)。

接口地址:https://pan.baidu.com/rest/2.0/xpan/multimedia

3.下载

拿到 dlink 后,可以通过 wget 或者 curl 等工具进行下载了。注意下载的时候这个 dlink 中也要加上 access_token 参数才可以下载,且 dlink 是有有效期的,一般是 8 个小时内有效(绝大多数文件 8 小时内都能下载完成吧)。

下载截图

二、开始便些自动下载的工具


确定流程可以走通后,得到结论是可以通过接入网盘接口,来实现自动化的下载服务。

1、实现搜索流程

//搜索网盘文件,获取fs_idpublic static BdNasFileResultModel SearchFile(string filename){    var token = GetAccessToken().access_token;    string url = $"https://pan.baidu.com/rest/2.0/xpan/file?method=search&key={filename}&access_token={token}&recursion=1";    string ret = Common.RequestHelper.HttpGet(url, "application/json");    BdNasFileResultModel ret_model = new BdNasFileResultModel();    if (ret.Contains("\"errno\":0"))    {        ret_model = JsonHelper.JsonDeserialize<BdNasFileResultModel>(ret);    }    return ret_model;}
复制代码

2、实现文件下载

//单文件下载public static BdNasFileDetailResultModel GetFileDetail(long fsid){    var token = GetAccessToken().access_token;    string url = $"https://pan.baidu.com/rest/2.0/xpan/multimedia?method=filemetas&fsids=[{fsid}]&access_token={token}&dlink=1";    string ret = RequestHelper.HttpGet(url, "application/json");    BdNasFileDetailResultModel ret_model = new BdNasFileDetailResultModel();    if (ret.Contains("\"errno\":0"))    {        ret_model = JsonHelper.JsonDeserialize<BdNasFileDetailResultModel>(ret);    }    return ret_model;}
复制代码

至此,和百度网盘的对接告一段落,开始借助 curl 进行下载,这段我就不贴了,就是调用 curl,传入参数即可,和调用 cmd.exe 步骤是一样的,就是注意下参数拼接即可。


好了,下载的流程比起上传来说要简单许多,就到这里了

发布于: 6 小时前阅读数: 5
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
通过接口百度网盘下载文件