如果我(手动)在 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/