如何以编程方式将文件上传到我的Skydrive帐户,获取其可共享链接?

时间:2016-03-30 21:41:39

标签: azure amazon-web-services download share onedrive

如果我(手动)在Onedrive / Skydrive中共享文件,并在HTML5下载元素中使用其可共享链接(这是在ASP.NET项目中):

string fileUrl = "https://onedrive.live.com/redir?resid=C150662F95F0ACCE!17660&authkey=!AG7MauCst0edTWE&v=3&ithint=photo%2cpng";
string downloadElement = string.Format("<a href='{0}' download='Minimal Spreadsheet file'><button type=\"button\">Spreadsheet file</button></a>", fileUrl);
builder.Append(downloadElement);

...效果相当不错 - 点击链接/按钮(downloadElement)并不会将文件下载到我的硬盘上,但确实会这样做:

1) Downloads a file named "redir.htm"
2) When I click that file to open it, it opens the shared file on a page, from which place it can be manually downloaded by the user.

所以我想知道的是:我如何以编程方式将文件上传到我的Skydrive帐户,使其可共享,并获取可共享的URL?

我希望能够做到这样的事情(在Windows 7上运行的Winforms应用程序中):

var skyDrive = new SkyDrive(myPwd);
string shareableUrl = skyDrive.UploadFileForSharing(someFile);

// 1) Save the value in "shareableUrl" to a database table
// 2) In a REST Get method on my Web API app, read the database table to dynamically build a list of links
// 3) Using code similar to that shown at the start of this post, cause the file itself to be downloaded (rather than an htm page (IOW, I want to "cut out the middleman")).
顺便说一下,我之所以倾向于OneDrive(例如,通过AWS),至少现在(我最终坚持哪一个还有待观察)仍然是我要访问的文件保存和共享是Excel / .xlsx文件,我认为OneDrive可能会支持他们通过可共享链接在线查看比其他人更好或更好(因为OneDrive和Excel都是Microsoft产品)。

但是如果Onedrive没有提供这种功能/ API,那么我愿意使用Azure或AWS insead,或其他任何事情。

更新

我重构了一下ASP.NET代码;这削减了&#34;中间人&#34;直接用共享文件打开页面:

string sharedFileRef = string.Format("<a href='{0}' target='_blank'><button type=\"button\">Spreadsheet file</button></a>", fileUrl);
builder.Append(sharedFileRef);

...基本上,我省略了&#34;下载&#34;爵士乐,并添加了一个&#34;目标&#34;指令,以便共享文件在新页面中打开(可手动下载)。

1 个答案:

答案 0 :(得分:3)

您是否了解了最新的OneDrive API:https://dev.onedrive.com/README.htm

有上传(https://dev.onedrive.com/items/upload.htm)和共享(https://dev.onedrive.com/items/sharing.htm

的API

希望这有帮助