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封装中推出,敬请期待。