Est-ce que quelqu’un sait comment obtenir une liste de fichiers pour un dossier SkyDrive particulier? Actuellement, j’utilise l’extrait de code suivant pour essayer d’obtenir les fichiers du dossier racine SkyDrive:
var client = new LiveConnectClient(e.Session); client.GetCompleted += (obj, arg) => { ... } client.GetAsync("me/skydrive");
mais tout ce qu’il retourne, c’est un dictionnaire de résultats contenant de nombreuses informations, mais aucune liste de noms de fichiers!
Selon les concepts de base de OneDrive (anciennement SkyDrive), vous disposez de deux options pour répertorier les fichiers, dans le répertoire principal ou dans un dossier spécifique. Comme vous l’avez découvert, vous pouvez répertorier les principaux fichiers à l’aide de
liveClient.GetAsync("me/skydrive/files");
et pour un dossier spécifique, vous utilisez folderId + "/files" , par exemple
liveClient.GetAsync(folder.Id + "/files");
dans l’événement GetCompleted , vous pouvez répertorier tous les fichiers de la clé de données
private void onFilesInformationDownloaded(object sender, LiveOperationCompletedEventArgs e) { if (e.Result == null) { // check e.Error for reason why it failed return; } List
Après avoir désespéré et posé la question ici
il s’avère que pour obtenir une liste des fichiers du dossier racine de skydrive, vous devez utiliser la chaîne magique me / skydrive / files plutôt que juste moi ou moi / skydrive.
C’est vraiment dommage que MS ne documente pas bien l’API de contenu live.
Vos fichiers sont-ils directement sous “moi / skydrive”? Sinon, vous devez l’appeler avec client.GetAsync("me/skydrive/YOURFOLDER");
Ensuite, vous écrivez votre sortie dans un dictionnaire de résultats avec les data clés. et vous pouvez le récupérer en utilisant cette partie de code dans votre gestionnaire completedEvent:
var data = (List)e.Result["data"]; foreach (IDictionary content in data) { var skyContent = new SkyDriveContent(); skyContent.Name = (ssortingng)content["name"]; ContentList.Add(skyContent); // where ContentList is : List ContentList = new List(); in your class }