2 回答
TA贡献1802条经验 获得超5个赞
该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
TA贡献1825条经验 获得超4个赞
对于下面的 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
添加回答
举报