SkyDrive API正在显示文件

SkyDrive API Displaying a file

本文关键字:显示文件 API SkyDrive      更新时间:2023-09-26

我正在使用Skydrive API,我希望我的用户能够打开一个关于文件的视图,在那里你可以编辑它(与我们在Skydrive网页上可以看到的关于文件的相同视图)。

可能有一个WL函数,但我找不到它。另一个解决方案是我获取视图页面的URL,并用javascript在新窗口中打开它

我已经使用SkyDrive及其API实现了此解决方案。您也可以在Microsoft的Interactive Live SDK在线工具中试用此脚本。关键是获取SkyDrive的重定向链接,该链接用于您要打开的文件。这个重定向链接是为Get-api的json结果中的每个文件返回的。

处理步骤:

  1. 初始化Windows Live jscript api客户端
  2. 使用Windows Live(skydrive)OAuth进行身份验证
  3. 获取文件:获取SkyDrive帐户中所有文件的列表。这可以根据您的需要进行调整,并专注于使用SkyDrive帐户获取特定文件夹的列表
  4. onFilesComplete:遍历json响应,查找类型为"file"且文件名为要打开的项。在这种情况下,文件名为"robots.txt"
    • 显示有关找到的文件的详细信息
    • 使用找到的文件的"链接"属性,在新的窗口浏览器窗口中打开url。这将使用SkyDrive默认操作打开文件。对于代码文件等已知文件类型,这将在SkyDrive的在线文件编辑器中打开它们。否则,默认操作将是下载找到的文件

示例代码:

WL.init({ client_id: clientId, redirect_uri: redirectUri });
WL.login({ "scope": "wl.skydrive" }).then(
    function(response) {
        getFiles();
    },
    function(response) {
        log("Could not connect, status = " + response.status);
    }
);
function getFiles() {
    var files_path = "/me/skydrive/files";
    WL.api({ path: files_path, method: "GET" }).then(
        onGetFilesComplete,
        function(response) {
            log("Cannot get files and folders: " +
                JSON.stringify(response.error).replace(/,/g, ",'n"));
        }
    );
}
function onGetFilesComplete(response) {
    var items = response.data;
    var foundFolder = 0;
    for (var i = 0; i < items.length; i++) {
        if (items[i].type === "file" &&
            items[i].name === "robots.txt") {
            log("Found a file with the following information: " +
                JSON.stringify(items[i]).replace(/,/g, ",'n"));
            foundFolder = 1;
            //open file in a new browser window
            window.open(items[i].link);
            break;
        }
    }
    if (foundFolder == 0) {
        log("Unable to find any file(s)");
    }
}
function log(message) {
    var child = document.createTextNode(message);
    var parent = document.getElementById('JsOutputDiv') || document.body;
    parent.appendChild(child);
    parent.appendChild(document.createElement("br"));
}