You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# MVC中通过Dropbox API获取已删除文件及回收站内容?

解决Dropbox API获取回收站内容的问题

直接传入回收站URL给ListFolderAsync是不可行的哦,Dropbox API并不把回收站当作一个常规的文件夹路径来访问,得用专门的参数来获取已删除的文件和文件夹。我给你梳理两种靠谱的方式:

方式一:通过include_deleted参数获取含删除项的目录内容

ListFolderAsync方法支持传入include_deleted参数,设为true时,返回结果会包含当前目录下所有已删除的项(这些项会保留原路径,但标记为删除状态)。你可以在此基础上筛选出回收站里的内容:

// 获取根目录所有内容(包含已删除项)
var list = await dbx.Files.ListFolderAsync(string.Empty, include_deleted: true);
// 筛选出已删除的文件/文件夹
var deletedItems = list.Entries.Where(entry => entry.IsDeleted).ToList();

// 遍历处理已删除项
foreach (var item in deletedItems)
{
    Console.WriteLine($"已删除{item.IsFolder ? "文件夹" : "文件"}:{item.Name},原路径:{item.PathLower}");
}

如果回收站内容较多,需要分页获取的话,记得处理HasMore属性和游标:

var allDeletedItems = new List<Metadata>();
var list = await dbx.Files.ListFolderAsync(string.Empty, include_deleted: true);
allDeletedItems.AddRange(list.Entries.Where(e => e.IsDeleted));

// 循环获取下一页内容
while (list.HasMore)
{
    list = await dbx.Files.ListFolderContinueAsync(list.Cursor);
    allDeletedItems.AddRange(list.Entries.Where(e => e.IsDeleted));
}

方式二:搜索回收站内容(适合精准查找)

如果你不需要遍历所有回收站内容,而是要搜索特定的已删除文件/文件夹,可以用SearchAsync方法,同样设置include_deleted: true:

// 搜索回收站中包含"project"的项
var searchResult = await dbx.Files.SearchAsync(string.Empty, "project", include_deleted: true);
var deletedSearchItems = searchResult.Matches.Where(m => m.Metadata.IsDeleted).ToList();

关键提醒

  • 不要尝试直接传入类似"/.trash"这种路径,Dropbox API不支持通过常规路径访问回收站;
  • 已删除项的IsDeleted属性会标记为true,你可以通过这个属性区分正常内容和回收站内容;
  • 如果需要恢复这些项,可以使用Files.RestoreAsync方法,传入已删除项的路径或ID即可。

内容的提问来源于stack exchange,提问作者Carlos Salinas Piña

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:08:34