从SkyDrive文件夹获取文件列表(Windows手机)(Get list of files fr

2019-07-30 02:18发布

有谁知道如何获得的文件列表特定SkyDrive文件夹? 目前我使用下面的代码片断,试图让根SkyDrive文件夹中的文件:

var client = new LiveConnectClient(e.Session);

client.GetCompleted += (obj, arg) =>
     {
      ...
     }

client.GetAsync("me/skydrive");

但所有的返回是一个包含大量的信息,但没有文件名列表的结果字典!

Answer 1:

据OneDrive核心概念 (以前的SkyDrive),你有两个选择列出的文件,无论是在顶级目录或特定文件夹。 当你发现,你可以使用榜前文件

liveClient.GetAsync("me/skydrive/files");

和特定文件夹使用folderId + "/files" ,例如

liveClient.GetAsync(folder.Id + "/files");

GetCompleted事件中,你可以列出从数据钥匙的所有文件

private void onFilesInformationDownloaded(object sender,
                                          LiveOperationCompletedEventArgs e) {
    if (e.Result == null) {
        // check e.Error for reason why it failed
        return;
    }
    List<object> data = (List<object>)e.Result["data"];
    foreach (IDictionary<string, object> content in data) {
        string type = (string)content["type"];
        if (type == "folder") {
            // do something with folders?
        }
        string filename = (string)content["name"];
        string fileId = (string)content["id"];
        // use fileId to download a file or list files in a folder

        // there's a few more details available in content.Keys
        // such as created_time and updated_time for those interested
    }
}


Answer 2:

越来越绝望和提出的问题后, 在这里

原来的从根SkyDrive文件夹中获取文件的列表中,您需要使用魔法字符串我/的SkyDrive /文件,而不是只有我或我/的SkyDrive



Answer 3:

这实在是糟糕,MS不会记录以及实时内容的API。

  1. 为了获得root文件夹内容使用URI: https://apis.live.net/v5.0/me/skydrive/files?access_token= “+的accessToken
  2. 对于任何其他文件夹中的内容使用URI: https://apis.live.net/v5.0/folder.4ab680998d14f4e7.4AB680998D14F4E7!110/files?access_token= “+的accessToken

folder.4ab680998d14f4e7.4AB680998D14F4E7!110是要列出的目标文件夹。

Java代码示例:

public void listRootFolder(String accessToken) {
    String folderId = "folder.4ab680998d14f4e7.4AB680998D14F4E7!110/files";
    String url = "https://apis.live.net/v5.0/" + folderId + "?access_token=" + accessToken;
    HttpMethod method = new GetMethod(url);
    HttpClient client = new HttpClient();
    try {
        int returnCode = client.executeMethod(method);
        System.out.println("Return code " + returnCode);
        System.out.println(method.getResponseBodyAsString());
    } catch (HttpException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}


Answer 4:

是你的文件直接在“我/ SkyDrive的”? 否则,你需要调用它client.GetAsync("me/skydrive/YOURFOLDER");

然后,在与该键的结果字典您数据的输出data 。 您可以使用这段代码在你的completedEvent处理程序获取它:

       var data = (List<object>)e.Result["data"];
       foreach (IDictionary<string, object> content in data)
       {                   
           var skyContent = new SkyDriveContent();
           skyContent.Name = (string)content["name"];
           ContentList.Add(skyContent);    // where ContentList is :     List<SkyDriveContent> ContentList = new List<SkyDriveContent>(); in your class                
       }

希望这可以帮助。



文章来源: Get list of files from SkyDrive folder (Windows Phone)