SkyDrive API显示文件

时间:2013-11-25 10:05:41

标签: javascript api onedrive

我正在使用Skydrive API,我希望我的用户能够打开一个文件视图,您可以在其中编辑它(当您在skydrive网站上时,我们可以获得与文件相同的视图页)。

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

1 个答案:

答案 0 :(得分:0)

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

处理步骤:

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

    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"));
    }