C#Dropbox Api检索公共共享文件夹的文件

时间:2017-02-22 10:45:43

标签: dropbox-api

我想问一下,如果有任何方法可以检索公开共享的文件夹的文件链接。就像有人创建随机公共文件夹(每个人都可以查看它)并将一些随机文件放入其中。所以我需要从该文件夹中获取所有文件链接。我所知道的是以格式链接到该文件夹​​:https://www.dropbox.com/sh/[code]/[code]。 我可以通过使用dropbox api来实现,或者唯一的选择是直接刮掉Dropbox页面吗?

2 个答案:

答案 0 :(得分:0)

获取特定共享链接信息的官方方法是使用Dropbox API的/ 2 / sharing / get_shared_link_metadata端点:

https://www.dropbox.com/developers/documentation/http/documentation#sharing-get_shared_link_metadata

在官方Dropbox .NET SDK中使用GetSharedLinkMetadataAsync方法:

https://dropbox.github.io/dropbox-sdk-dotnet/html/M_Dropbox_Api_Sharing_Routes_SharingUserRoutes_GetSharedLinkMetadataAsync_1.htm

但遗憾的是,这并没有提供文件列表。我们会考虑功能请求。

请注意,抓取网站容易出错,并且可能会在没有警告的情况下中断。 (无论如何,它也反对the terms。)

编辑:

Dropbox API v2现在支持列出文件夹的共享链接的内容。这可以通过list_folder功能使用与列出已连接用户帐户中的文件夹相同的界面来完成。要列出文件夹共享链接的内容,请将shared_link参数中的共享链接URL提供给/ 2 / files / list_folder:

https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder

如果您使用的是官方SDK,则此端点也会有相应的方法。在可用作ListFolderAsync的.NET SDK中:

https://dropbox.github.io/dropbox-sdk-dotnet/html/M_Dropbox_Api_Files_Routes_FilesUserRoutes_ListFolderAsync_1.htm

答案 1 :(得分:0)

这是一个复制粘贴示例:

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);

    foreach (var file in sharedFiles.Entries)
    {

    }        
}

对于在公共共享文件夹中使用将路径设置为空字符串,文档尚不清楚。