2

我有的

我 在必须访问 SkyDrive 文件的浏览器中运行WEB应用程序。我使用WL.js提供的不错的接口来访问当前经过身份验证的用户的文件列表:

   function openFromSkyDrive() {
        WL.fileDialog({
            mode: 'open',
            select: 'single'
        }).then(
        function (response) {

            var files = response.data.files;
            for (var i = 0; i < files.length; i++) {
                var file = files[i];
                log(file.name);
                WL.download({ "path": file.id + "/content" }, onDownloadFileCompleted).then(
                function (response) {
                   var r = response;
                },
                function (responseFailed) {
                  log("Error downloading file: " + responseFailed.error.message);
                });


                //TRIED TO USE SIMPLE GET CALL TOO, DIDN'T WORKED AS WELL
               /* var url = file.link;
                WL.api({ path: url,

                    method: "GET"
                }).then(
                     function (response) {
                         log("Downloaded : " + response.name + ", ID: " + response.id)
                     },
                    function (responseFailed) {
                        "Error calling API: " + responseFailed.error.message;
                    }
                ); */

            }
        },
       .....
    );
    }

一切都很好,很干净。

问题

当我使用WL.download文件的下载在浏览器中开始时,浏览会加载文件,但我需要将文件内容加载到我的 javascript 中,这样我就可以直接从我的应用程序处理内容。

请注意,我已经尝试使用WL.api具有GET不同路径的方法(我尝试了文件对象中的所有可用方法)但它失败了:或者它返回一个错误,或者什么也没有。

WinJS似乎提供XHR调用方法,但我不能使用它,因为我正在编写网络应用程序并且WinJS仅供桌面使用。

问题

如何处理从 skydrive 下载/下载文件的内容?是否有可能无需手动创建框架和 XHR 调用定义?

4

1 回答 1

0

您可以像这样使用 WL.api 方法创建一个链接,允许您访问该文件:

WL.api({
    path: file.id + "/content",
    method: "GET"
}).then(
    function(response) {
        //URL will be in response.location, so load file content using jQuery or similar
        $.get(response.location, /* etc */);
    },
    function(err) {
        alert(err);
    }
);

奇怪的是,返回的 URLresponse.location不需要任何身份验证 - 因此您可以通过电子邮件发送给其他人,他们将有权访问该文件。这与文件是否在 OneDrive 中设置为共享无关。从安全的角度来看,这对我来说似乎很奇怪,但我可能会遗漏一些东西。

于 2014-04-16T10:41:15.593 回答