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

标签 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,或者其他任何东西。

更新

我稍微重构了 ASP.NET 代码;这样就省去了“中间人”,直接打开共享文件的页面:

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

...基本上,我省略了“下载”jazz,并添加了“目标”指令,以便共享文件在新页面中打开(可手动下载)。

最佳答案

您查看过最新的 OneDrive API 吗:https://dev.onedrive.com/README.htm

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

希望这有帮助

关于azure - 如何以编程方式将文件上传到我的 Skydrive 帐户并获取其可共享链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36320256/

相关文章:

c# - 将多个 Blob 输入传递到 QueueTrigger Azure 函数的最佳方法

amazon-web-services - 为静态 Amazon S3 内容和动态 heroku 内容配置代理的最简单方法

ajax - Grails文件下载-客户端

google-chrome - 音频下载链接在 Firefox 中有效,但在 Chrome 中流式传输

azure - SSL错误: HTTPSConnectionPool when registering ML model on Azure

azure - 我可以找到 Azure 子网中可用 IP 地址的数量吗?

Azure IoT Explorer 无法将该设备识别为 IoT 即插即用设备

amazon-web-services - 将 EC2 IP 路由到自定义 Route 53 域

amazon-web-services - S3 key 不在 S3 事件通知中

ruby-on-rails - Firefox 在下载时不显示 PDF 文件扩展名