8

特定の SkyDrive フォルダーのファイルの一覧を取得する方法を知っている人はいますか? 現在、次のスニペットを使用して、ルート SkyDrive フォルダーのファイルを取得しようとしています。

var client = new LiveConnectClient(e.Session);

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

client.GetAsync("me/skydrive");

しかし、それが返すのは、多くの情報を含むがファイル名のリストを含まない Result ディクショナリだけです!

4

4 に答える 4

10

OneDrive のコア コンセプト(以前の SkyDrive)によると、ファイルを一覧表示するには、トップ ディレクトリまたは特定のフォルダーのいずれかに 2 つのオプションがあります。ご存知のように、次を使用して上位のファイルを一覧表示できます

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
    }
}
于 2012-09-03T21:53:21.050 に答える
3

MS がライブ コンテンツ API を十分に文書化していないのは本当に残念です。

  1. ルート フォルダーのコンテンツを取得するには、次の 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();
    }
}
于 2012-10-18T13:24:29.120 に答える
3

必死になってここで質問したら

ルート skydrive フォルダーからファイルのリストを取得するには、me または me/skydrive だけでなく、マジック ストリング me/skydrive/files を使用する必要があります。

于 2012-06-25T12:59:56.130 に答える