SkyDrive API Отображение файла

Я работаю с API-интерфейсами Skydrive и хочу, чтобы мой пользователь мог открыть представление о файле, где вы можете его редактировать (такое же представление, которое мы можем иметь о файле, когда вы находитесь на веб-странице SkyDrive).

Возможно, для этого есть функция WL, но я не могу ее найти. Другим решением было бы получить URL-адрес страницы просмотра и открыть ее в новом окне с помощью javascript.


person Nicolas Bridot    schedule 25.11.2013    source источник


Ответы (1)


Я реализовал это решение с помощью SkyDrive и его API. Вы можете попробовать этот скрипт в Microsoft Interactive Live SDK также онлайн-инструмент. Ключ в том, чтобы получить ссылку перенаправления SkyDrive для файла, который вы хотите открыть. Эта ссылка перенаправления возвращается для каждого файла в результате json Get API.

Этапы обработки:

  1. Инициализирует API-клиент Windows Live jscript.
  2. Аутентификация с помощью Windows Live (skydrive) OAuth
  3. GetFiles: получите список всех файлов в вашей учетной записи SkyDrive. Это можно настроить в соответствии с вашими потребностями и сфокусировать, чтобы просто получить список для определенной папки с вашей учетной записью SkyDrive.
  4. onFilesComplete: iterate through json response looking for an item with a type='file' and file name you are looking to open. In this, case a file name 'robots.txt'
    • display details about the found file
    • используя атрибут «ссылка» найденного файла, откройте 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"));
}
person Patrick Neborg    schedule 02.12.2013