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

Python获取Dropbox指定文件夹文件URL的实现与报错排查

问题原因

你调用属性报错的本质是对Dropbox SDK的字段理解有误:files_list_folder返回的FileMetadata对象本身没有直接挂载公网访问URL的属性,你代码里写的file_requests是文件收集请求功能的相关字段、file_properties是文件自定义属性字段,和文件访问链接完全无关,自然会触发属性不存在的报错。

Dropbox获取文件URL分两种常用场景,对应不同的SDK调用方法:

  • 临时直链:有效期4小时,无需提前设置分享权限,适合临时拉取访问的场景
  • 永久分享链接:长期有效,可配置访问权限,适合长期对外分享的场景
正确实现代码

如果还没安装SDK,先执行安装命令:pip install dropbox

完整可运行代码如下,已经做了分页拉取、文件/文件夹过滤、异常兼容处理:

import dropbox

# 替换为你自己的账号访问令牌
TOKEN = 'my_access_token'
# 替换为你要遍历的目标文件夹路径
TARGET_FOLDER = '/Main/Test'

dbx = dropbox.Dropbox(TOKEN)

# 处理分页逻辑,拉取文件夹下所有条目(避免文件数超过接口默认上限漏数据)
all_entries = []
res = dbx.files_list_folder(TARGET_FOLDER)
all_entries.extend(res.entries)
while res.has_more:
    res = dbx.files_list_folder_continue(res.cursor)
    all_entries.extend(res.entries)

for entry in all_entries:
    # 跳过子文件夹,只处理文件类型条目
    if isinstance(entry, dropbox.files.FileMetadata):
        print(f"文件名:{entry.name}")
        # 获取4小时有效期的临时直链,可直接访问无需鉴权
        temp_link = dbx.files_get_temporary_link(entry.path_lower).link
        print(f"临时直链:{temp_link}")

        # 获取永久分享链接,已存在则直接返回现有链接避免重复创建报错
        try:
            existing_links = dbx.sharing_list_shared_links(path=entry.path_lower).links
            if existing_links:
                permanent_link = existing_links[0].url
            else:
                # 默认权限为「持链人可查看」,可传入SharedLinkSettings调整为编辑、指定用户可见等权限
                permanent_link = dbx.sharing_create_shared_link_with_settings(entry.path_lower).url
            print(f"永久分享链接:{permanent_link}")
        except Exception as e:
            print(f"获取{entry.name}永久链接失败:{str(e)}")
        print("-" * 60)
注意事项
  • 临时直链不需要额外配置权限,生成即可直接访问下载,适合短时间批量拉取文件的场景
  • 永久分享链接如果需要做权限管控,可以在创建时传入配置参数,调整访问范围、是否允许下载/编辑等属性
  • 免费版Dropbox账号的分享链接有流量阈值,高频访问场景建议优先使用临时直链避免被限制访问

内容的提问来源于stack exchange,提问作者morganpgs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:54:22