如何使用Dropbox .Net SDK上传文件至他人共享的文件夹
解决Dropbox .NET SDK上传文件到共享文件夹的问题
核心原因
你上传时指定的路径是个人账户的默认路径,而非共享文件夹的实际路径/唯一标识,导致SDK在你的账户下创建了同名文件夹,而非写入目标共享文件夹。
解决步骤
获取目标共享文件夹的元数据
调用Sharing.ListFoldersAsync()后,遍历返回的SharedFolderMetadata集合,定位到目标共享文件夹,记录它的PathLower(完整的共享文件夹路径,格式如/team-shared-folder)或Id(共享文件夹的唯一标识)。示例代码:
var sharedFolders = await dbx.Sharing.ListFoldersAsync(); var targetFolder = sharedFolders.Entries.FirstOrDefault(f => f.Name == "目标共享文件夹名称"); if (targetFolder == null) { // 处理文件夹未找到的逻辑 return; }基于共享文件夹路径上传文件
上传时,将文件的远程路径拼接为共享文件夹的PathLower加上文件名,而非直接使用文件名或个人账户根路径。示例上传代码:
string localFile = @"D:\local-files\demo.pdf"; string sharedFolderPath = targetFolder.PathLower; string remoteFileFullPath = $"{sharedFolderPath}/demo.pdf"; using (var stream = File.OpenRead(localFile)) { await dbx.Files.UploadAsync( remoteFileFullPath, WriteMode.Overwrite.Instance, body: stream ); }可选:用共享文件夹ID精准上传
如果存在同名共享文件夹,建议用Id指定路径(格式为id:共享文件夹ID),避免路径混淆:string remoteFileFullPath = $"id:{targetFolder.Id}/demo.pdf";
注意事项
- 确认你拥有该共享文件夹的写入权限,只读权限会导致上传失败。
- 建议添加异常捕获逻辑,处理权限不足、路径无效等场景。
内容的提问来源于stack exchange,提问作者tim
相关产品推荐
相关产品推荐

