使用REDCapAPI的exportFiles()导出文件时存在文件却报错
REDCap exportFiles() 报错400:无文件可下载(实际文件存在)的排查方案
可能的原因及解决办法
核查实例号(instance)的准确性
遗留项目中重复表单的实例计数可能和新版REDCap存在差异,比如旧版实例号从0开始计数,迁移后新版默认从1开始,或者迁移过程中实例号被重置。可以先调用exportRecords()获取目标字段的完整数据,确认记录"1"的upload_1字段对应的真实实例号:records <- exportRecords(source_project, records = "1", fields = c("record_id", "upload_1", "redcap_repeat_instance")) print(records)从返回结果中提取正确的实例号,替换到
exportFiles()的instance参数中重试。检查文件字段的权限配置
确认你的API账号对目标记录的upload_1字段(含所有重复实例)拥有文件下载权限。项目迁移后权限配置可能被重置,尤其是重复表单的字段权限,需要在REDCap网页端的用户权限设置里,确保勾选该字段的文件下载权限,且覆盖所有重复实例。验证文件的实际存储状态
手动在REDCap网页端打开记录1的第2个实例,尝试下载该文件:- 如果网页端也无法下载,说明服务器端的文件存储或数据库关联条目出现异常,需联系REDCap管理员核查文件存储目录或数据库中的文件关联记录。
- 如果网页端能正常下载,排查API调用的参数细节:
- 确认
record参数的格式是否与系统要求严格匹配(比如是字符串还是数字类型) - 检查是否存在隐藏的重复表单分组或逻辑分支,导致该实例的字段在API视角下不可见
- 确认
尝试批量导出缩小范围
先导出该字段的所有文件,再筛选目标记录的实例:all_files <- exportFiles(source_project, field = "upload_1")查看返回结果中是否存在记录
1的对应文件条目,以此判断是单个实例的问题还是参数调用的问题。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

