Загрузка изображений из общедоступных папок и подпапок в Dropbox - PullRequest
5 голосов
/ 27 мая 2020

Это похоже на мой предыдущий вопрос: Загрузка изображений из общедоступной папки в Dropbox

У меня есть этот фрагмент кода (упрощенная версия), который должен загружать все изображения из общедоступных папка и все подпапки.

using Dropbox.Api;
using Dropbox.Api.Files;
...
// AccessToken - get it from app console 
// FolderToDownload - https://www.dropbox.com/sh/{unicorn_string}?dl=0

using (var dbx = new DropboxClient(_dropboxSettings.AccessToken))
{
    var sharedLink = new SharedLink(_dropboxSettings.FolderToDownload);
    var sharedFiles = await dbx.Files.ListFolderAsync(path: "", sharedLink: sharedLink);

    // var sharedFiles = await dbx.Files.ListFolderAsync(path: "", sharedLink: sharedLink, recursive: true); 
    // "recursive: true" throws:  Error in call to API function "files/list_folder": Recursive list folder is not supported for shared link.

    foreach (var entry in sharedFiles.Entries)
    {
        if (entry.IsFile)
        {
            var link = await dbx.Sharing.GetSharedLinkFileAsync(url: _dropboxSettings.FolderToDownload, path: "/" + entry.Name);
            var byteArray = await link.GetContentAsByteArrayAsync();
        }

        if (entry.IsFolder)
        {
            var subFolder = entry.AsFolder;
            // var folderContent = await dbx.Files.ListFolderAsync(path: subFolder.Id);
            // var subFolderSharedLink = new SharedLink(???);
        }
    }        
}

Как мне вывести список записей всех подпапок?

1 Ответ

3 голосов
/ 27 мая 2020

Для любой данной подпапки, чтобы перечислить ее содержимое, вам нужно будет снова позвонить на ListFolderAsync, используя то же значение sharedLink, но предоставив значение path для подпапки относительно root папка для общей ссылки.

Например, если вы перечисляете содержимое общей ссылки папки, и одна из записей является папкой с именем «SomeFolder», чтобы затем перечислить содержимое «SomeFolder» ", вам нужно будет позвонить, например:

await dbx.Files.ListFolderAsync(path: "/SomeFolder", sharedLink: sharedLink);
...