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