0

我正在尝试从 Dropbox Team 文件夹下载文件,创建的访问密钥我尝试使用 files_list_folder() 根据 StackOverflow 的不同帖子的建议,但是,此方法无法通过 dropboxTeam 类访问。

dbx = dropbox.DropboxTeam(_dropbox_token)

dbx.files_list_folder() # here this method not showing

所以,帮我做。整个想法是从文件夹的文件夹中循环获取文件列表并下载。

4

2 回答 2

1

files_list_folder方法在特定 Dropbox 用户的帐户上运行,而不是在整个 Dropbox 团队上运行,因此它只存在于dropbox.Dropbox,而不存在于dropbox.DropboxTeam. 这同样适用于files_list_folder_continue,files_download等。

如果您只需要连接到单个 Dropbox 帐户来访问该帐户中的文件(无论该帐户是否属于 Dropbox Business 团队),您都可以注册一个“ Dropbox APIdropbox.Dropbox ”应用并使用访问令牌直接创建一个对象对于连接到您的应用程序的任何用户。

如果您确实需要能够连接到整个 Dropbox Business 团队的任何成员,您应该注册一个“ Dropbox Business API ”应用并使用生成的访问令牌来创建一个dropbox.DropboxTeam对象。该对象适用于整个团队,但您可以使用“团队成员文件访问”功能DropboxTeam.as_user通过orDropboxTeam.as_admin方法访问特定成员的帐户。

总而言之:

  • 如果您使用的是“Dropbox API”应用程序,您的代码应如下所示:
dbx = dropbox.Dropbox(_dropbox_token)

dbx.files_list_folder()
  • 如果您使用的是“Dropbox Business API”应用,您的代码应如下所示:
dbx = dropbox.DropboxTeam(_dropbox_token).as_user(member_id)

dbx.files_list_folder()

此外,有关如何访问 Dropbox 帐户的不同部分(例如团队文件夹)的信息,请查看命名空间指南内容访问指南。要设置Namespace GuideDropbox-API-Path-Root中提到的 Header ,请使用方法。Dropbox.with_path_root

于 2020-01-23T17:32:37.390 回答
0

对于下面的 Dropbox Business API,python 代码有助于从 Dropbox 下载文件。

#功能

代码

def dropbox_file_download(access_token,dropbox_file_path,local_folder_name):

try:
    dropbox_file_name = dropbox_file_path.split('/')[-1]
    dropbox_file_path = '/'.join(dropbox_file_path.split('/')[:-1])
    dbx = dropbox.DropboxTeam(access_token)
    # get the team member id for common user
    members = dbx.team_members_list()
    for i in range(0,len(members.members)):
        if members.members[i].profile.name.display_name == logged_user_name:
            member_id = members.members[i].profile.team_member_id
            break
    # connect to dropbox with member id
    dbx = dropbox.DropboxTeam(access_token).as_user(member_id)
    # list all the files from the folder
    result = dbx.files_list_folder(dropbox_file_path, recursive=False)
    #  download given file from dropbox
    for entry in result.entries:
        if isinstance(entry, dropbox.files.FileMetadata):
            if entry.name == dropbox_file_name:
                dbx.files_download_to_file(local_folder_name+entry.name, entry.path_lower)
                return True
    return False
except Exception as e:
    print(e)
    return False
于 2021-07-14T14:18:22.440 回答