如何利用dbank的直链下载

dbank最近推出的直链功能确实使得网盘更加方便强大了,我们可以把自己的共享资源上传到dbank网盘,然后发布直链给别人免登录免跳转地直接下载。

这里有一些站长的直链使用分享

网盘直链的API已经放出,可以到dbank开放平台上去查看。这个外链也有详细的使用说明,不过是php语言的demo,对于asp用户来说使用起来不太方便,我这里做一个asp.net的使用示例,大家可以参照。


A,首先打开浏览器访问直链授权页,将自己网盘授权给直链应用


使用自己的账号密码登录授权后,服务器会返回给你一个APPID与APPSECRET如下


此时可以登录dbank,查看网盘下的我的应用是否多了一个PublicFiles目录,这个就是直链应用的目录,需要做直链的文件都需要存储在这个目录下


B,客户端应用——下载使用示例中的客户端demo来生成资源的直链(站长可以不看本节直接跳到C部分,此部分适用于客户端应用

这个demo是VS2010下面的项目,需要.net framework 2.0及以上的版本支持,其他还有Sharpdevelop 4.2和monodevelop也可以用来编译运行此demo,后面两个IDE比较轻量级一点,呵呵

打开Program.cs文件,定位到如下代码

try
{
    //从直链授权返回的APPID和APPSECRET
    NSPClient nC = new NSPClient("51345", "6ykOuxbeL68502d9FVRI766W1drADlwn");

    VFS_LINK vfs_link = nC.service<VFS_LINK>(typeof(VFS_LINK));
    try
    {
        string path = "/PublicFiles/testlua.zip"; // 请确定文件的路径,不是"/Netdisk/"下,而是在直链目录下
        string clientIp = nC.getExtIpAddress();

        Dictionary<object, object> res = vfs_link.getDirectUrl(path, clientIp);

        Console.WriteLine("状态码=" + res["retcode"]);

        if (res["retcode"].ToString() == "0000")    // 如果返回 0000 ,表示可以下载,其他状态码是没有下载地址的,请注意!!!
        {
            Console.WriteLine("下面这个就是直链地址,可用于下载\n" + res["url"]);
        }
    }
    catch (Exception err)
    {
        Console.WriteLine(err.ToString());
    }
}
catch (Exception err) {
    Console.WriteLine(err.ToString());
}

将A步骤获得的APPID和APPSECRET替换到NSPClient nC = new NSPClient("51345", "6ykOuxbeL68502d9FVRI766W1drADlwn");中去。然后设置需要直链的文件,如上面的"/PublicFiles/testlua.zip", 需要绝对路径,然后运行程序即可,你会得到如下结果。


这个url就是该资源的直链地址了,可以拷贝到浏览器地址栏中测试是否能直接下载,很方便吧。

C,网站应用——php版本可以参照这个外链,我这里利用C#的SDK实现一个asp.net的demo,下载地址(http://dl.dbank.com/c03v3behmg)其中nsp(asp.net).zip解压即可用

网页(下载页面)的代码如下,每个资源下载都链接到Geturl.aspx页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=gbk" /><title>
	下载测试
</title>
</head>
<body>
            
    <h2>
        欢迎使用 华为网盘 直链下载功能
    </h2>
    <p>
        若要了解关于 直链下载 的详细信息,请访问 <a href="http://open.dbank.com/appDatabase.html?v=2.5.6#30" title="网盘开放平台">网盘开放平台API</a>。
    </p>
    <p>
        您还可以找到 <a href="http://blog.csdn.net/ciaos/article/details/7656003"
            title="MSDN ASP.NET 文档">Ciaos的博文介绍</a>。
    </p>
    <p>
        我的测试下载: 
        <br />
        testlua.zip <a href="nsp/Geturl.aspx?file=testlua.zip">点击直链下载</a>
        <br />
        Redis学习笔记整理.pdf <a href="nsp/Geturl.aspx?file=Redis学习笔记整理.pdf">点击直链下载</a>
        <br />
        MongoDB.pdf <a href="nsp/Geturl.aspx?file=MongoDB.pdf">点击直链下载</a>
        <br />
        mapreduce.pdf <a href="nsp/Geturl.aspx?file=mapreduce.pdf">点击直链下载</a>
        <br />
        HDFS简介.pdf <a href="nsp/Geturl.aspx?file=HDFS简介.pdf">点击直链下载</a>
    </p>

    
</body>
</html>

需要做下载的资源直接链接<a href="nsp/Geturl.aspx?file={直链目录下的文件}">点击直链下载</a>即可

运行效果如下:


点击直链下载就可以直接调用华为网盘的下载地址进行下载了,非常方便和简单


我封装了asp.net版本的直链接口在Geturl.aspx文件里面(可以直接放在你的项目中使用),具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using dbank_sdk_dotnet;


public partial class Geturl : System.Web.UI.Page
{
    //使用直链应用授权返回的APPID与APPSECRET
    //  http://login.dbank.com/loginauth.php?nsp_app=50601
    //
    private string APPID        = "51345";
    private string APPSECRET    = "6ykOuxbeL68502d9FVRI766W1drADlwn";

    //下载失败的跳转页
    //  可以考虑替换为404页面或网站首页
    //
    private string DEFAULT_PAGE = "../test.html";


    #region 直链下载
    //下面的代码不用修改
    protected void Page_Load(object sender, EventArgs e)
    {
        string default_page = DEFAULT_PAGE; 

        //读取下载资源名
        string filename = null;
        try
        {
            filename = Request.QueryString.Get("file").ToString();
        }
        catch (Exception) {
            Response.Redirect(default_page);
        }

        
        //获取直链下载地址
        NSPClient nC = new NSPClient(APPID, APPSECRET);
        VFS_LINK vfs_link = nC.service<VFS_LINK>(typeof(VFS_LINK));
        try
        {
            string path = "/我的网盘/我的应用/PublicFiles/" + filename; // 请确定文件的路径,不是"/Netdisk/"下,而是在直链目录下
            string clientIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (clientIp == null) {
                clientIp = Request.ServerVariables["REMOTE_ADDR"];
            }
			
            Dictionary<object, object> res = vfs_link.getDirectUrl(path, clientIp);

            //获取到直链地址后,跳转到直链下载地址
            if (res["url"] != null)
            {
                Response.Redirect(res["url"].ToString(), false);
            }
            else {
                Response.Redirect(default_page);
            }
        }
        catch (Exception)
        {
            Response.Redirect(default_page);
        }
    }
    #endregion
}

test.html页面中的下载可用后请使用A步骤中获取到的APPID和APPSECRET来替换Geturl.aspx.cs中的值,还需要自定义下载出错后的跳转页面。

从上面可以看出,接口调用存在失败的情况(比如文件不存在,没有流量等情况),我这里统一做了出错跳转处理,站长们可以自定义具体业务。

此外,对于网络传输来说流量是弥足珍贵的,站长最好还是需要考虑如何提升直链的下载质量,尽量避免盗链的存在,虽然在这方面dbank已经做了很多努力防盗链处理。

此外站长还可以考虑自己实现流量统计功能,这个功能我也会考虑在后续的api封装中推出,敬请期待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值