Bootstrap

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

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

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

1.获取前置参数fs_id

要获取这个参数,首先要得到文件的基本信息,可以通过列表接口或者搜索接口来获取,接口地址:。通过响应内容中的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_id
public 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(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(ret);
    }
    return ret_model;
}

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

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