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

使用Python-requests调用REST API上传文件时遇400错误求助

解决Python调用REST API上传文件返回400错误的问题

以下是几个排查和解决方向:

  • 核对表单字段名:Postman中上传文件时,form-data的字段名称必须和Python代码中files字典的键完全一致。比如Postman里用的是upload而不是file,就会导致参数不匹配返回400。打开Postman的请求Body详情,确认字段名后修改代码。

  • 确保文件可正常读取:

    • 检查文件路径在不同系统下的正确性:Windows用双斜杠,Linux用正斜杠,同时确认文件存在且当前用户有读取权限。可以添加简单的校验:
      import os
      file_path = "/path/to/1clickVPN-1.1.3.apk"  # Linux路径示例
      if not os.path.isfile(file_path):
          print("文件不存在")
      if not os.access(file_path, os.R_OK):
          print("无文件读取权限")
      
    • 推荐用with语句管理文件对象,避免资源泄漏:
      with open(file_path, 'rb') as f:
          files = {'file': f}
          response = requests.post('http://193.206.183.20:8000/api/v1/upload', headers=headers, files=files)
      
  • 校验请求头配置:Postman会自动生成符合要求的请求头(比如Content-Type: multipart/form-data),手动设置的headers可能覆盖或缺失必要信息。可以尝试移除自定义headers中不必要的项,或者对比Postman的请求头,补充Python代码中缺少的字段。

  • 查看API返回的详细错误信息:不要只打印响应状态码,打印response.text或response.json()获取具体错误描述,这是最快定位问题的方法:

    print(response.text)
    # 若API返回JSON格式错误信息
    try:
        print(response.json())
    except:
        pass
    
  • 对比请求差异:用抓包工具(如Wireshark)分别捕获Postman和Python代码发送的请求,对比两者的请求体、头信息、边界标识等细节,差异点通常就是问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:30:18