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

Python requests上传文件返回200状态码但空JSON响应如何解决

问题原因

你的requests请求和成功的curl/Postman请求参数不一致,漏传了两个必填的表单字段,后端校验参数不通过所以返回空JSON。
对照你提供的curl命令,multipart/form-data里一共传了3个字段:

  • file:二进制文件本身
  • fileName:文件名字符串
  • fileType:文件MIME类型字符串
    你写的Python代码只传了file字段,完全缺失fileName和fileType两个参数,后端拿不到完整的上传元信息,自然不会正常返回fileId。另外你的代码片段里还漏了HTTPBasicAuth的导入,也没指定Accept请求头告知服务端需要返回JSON格式。
修复代码
import requests
from requests.auth import HTTPBasicAuth

session = requests.session()

# 上传的文件字段
with open('1.png', 'rb') as f:
    files = {
        'file': ('1.png', f, 'image/png')
    }
    # 补充缺失的普通表单字段
    form_params = {
        'fileName': '1.png',
        'fileType': 'image/png'
    }
    # 补充必要请求头,不要手动加Content-Type: multipart/form-data,requests会自动生成带正确boundary的头
    headers = {
        'Accept': 'application/json'
    }

    resp = session.post(
        url='http://someurl.com/api/file',
        auth=HTTPBasicAuth('my_login', 'my_password'),
        files=files,
        data=form_params,
        headers=headers
    )

print(resp.json())
避坑提示
  • 绝对不要手动给上传请求写Content-Type: multipart/form-data头:requests处理文件上传时会自动生成包含随机boundary的Content-Type头,手动写死的头缺少boundary参数,会直接导致服务端无法解析请求体
  • 打开文件建议用with上下文管理器,上传完成后会自动关闭文件句柄,避免资源泄漏
  • 如果修复后还是异常,可以打印resp.request.headers和resp.request.body,和curl的请求内容做逐字段对比,很快就能定位参数差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.04 16:21:51