[英]Downloading images from publicly shared folders and sub-folders on Dropbox
這類似於我之前的問題: Downloading images from public shared folder on 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(???);
}
}
}
如何列出所有子文件夾的條目?
對於任何給定的子文件夾,要列出其內容,您需要再次回調ListFolderAsync
,使用相同的sharedLink
值,但提供子文件夾的path
值,相對於共享鏈接的根文件夾。
例如,如果您列出文件夾共享鏈接的內容,並且其中一個條目是名稱為“SomeFolder”的文件夾,那么要列出“SomeFolder”的內容,您需要進行如下調用:
await dbx.Files.ListFolderAsync(path: "/SomeFolder", sharedLink: sharedLink);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.