CVAT项目中任务创建成功但文件上传失败,求技术解决方案
CVAT任务文件上传失败的修复方案
问题诊断
你的上传代码存在三个核心问题:
- 请求URL未正确替换
task_id变量,导致请求地址无效 - 错误使用
server_files参数传递本地文件路径,该参数仅用于指定CVAT服务器已存在的文件 - 未通过
requests的files参数正确传递本地文件对象
修复后的代码
import requests task_id = 8 # 正确替换task_id到URL中 link = f'http://xx.x.xxx.xx:8080/api/tasks/{task_id}/data/' Header = { "X-Organization": "ABC_labelling" } # 构造文件上传对象:用字典格式,key为"client_files",value是打开的文件对象列表 files = [ ('client_files', open('/Users/username/Documents/images/abc001.tif', 'rb')), ('client_files', open('/Users/username/Documents/images/abc002.tif', 'rb')) ] # 上传参数:保留image-quality,无需server_files d = { "image-quality": 70 } # 发送请求:用files参数传递文件,不要在data里放文件路径 r = requests.post(link, data=d, files=files, headers=Header, auth=('username','pw')) # 打印响应信息排查问题 print(r.status_code) print(r.text)
关键说明
- URL替换:使用f-string把
task_id变量嵌入URL,确保请求地址指向正确任务 - 文件传递方式:CVAT API上传本地文件需要用
client_files作为key,通过requests的files参数传递二进制打开的文件对象;server_files仅用于引用服务器上已存在的文件路径 - Headers调整:小文件单次上传无需
Upload-Start和Upload-Finish头,分块上传时才需逐步设置这两个头控制流程 - 调试建议:打印响应状态码和文本,可快速定位权限、路径、格式类问题
内容的提问来源于stack exchange,提问作者yl_low
相关产品推荐
相关产品推荐

