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

Laravel+Python请求失败但Postman可正常运行问题排查

解决树莓派Python脚本发送multipart/form-data视频失败的问题

嘿,太懂这种“Postman能跑自己的脚本不行”的憋屈感了!之前用Base64凑合用肯定不是长久之计,毕竟视频文件大的话Base64会额外增加体积,效率太低。咱们一步步排查问题:

最常见的坑:错误手动设置Content-Type

很多人写脚本的时候会手动加headers={"Content-Type": "multipart/form-data"},这反而会搞砸请求!因为multipart/form-data需要自动生成的boundary分隔符,requests库会在你使用files参数时自动处理这个header,手动设置会覆盖掉正确的boundary,导致后端无法解析。

正确的requests用法示例

import requests

# 替换成你的目标API地址
target_url = "https://your-api-endpoint.com/upload"
# 树莓派上的视频文件路径
video_file_path = "/home/pi/recordings/test_video.mp4"

# 构造files字典,注意键名要和后端接收的字段完全一致(比如Postman里用的是"file"还是"video")
upload_files = {
    "video": (
        "test_video.mp4",  # 上传时的文件名,可选,不传的话会用原文件名
        open(video_file_path, "rb"),  # 二进制模式打开文件!必须是rb
        "video/mp4"  # MIME类型,后端可能会校验这个
    )
}

# 如果需要附带其他表单参数,用data字典
form_data = {
    "device_id": "raspberry_pi_001",
    "timestamp": "2024-05-20T12:34:56"
}

try:
    response = requests.post(target_url, files=upload_files, data=form_data)
    # 打印响应信息,方便排查
    print(f"响应状态码: {response.status_code}")
    print(f"响应内容: {response.text}")
except Exception as e:
    print(f"请求出错: {str(e)}")
finally:
    # 记得关闭文件句柄,避免资源泄漏
    upload_files["video"][1].close()

快速排查技巧:对比Postman生成的代码

Postman有个超实用的功能:把你的成功请求转换成Python代码。步骤如下:

  • 在Postman里发送成功的视频上传请求
  • 点击请求右上角的「Code」按钮
  • 在弹出的窗口里选择「Python - requests」
  • 把生成的代码复制出来,和你自己的脚本逐行对比,看哪里不一样(比如字段名、文件名、MIME类型、有没有额外的headers)

这种方法能直接定位到你脚本里的细节错误,比如你可能把字段名写成了"video_file"但后端只认"file",或者文件名带了特殊字符没处理。

其他可能的问题点

  • 文件权限:树莓派上的Python脚本有没有读取视频文件的权限?可以用ls -l /home/pi/recordings/test_video.mp4查看权限,必要时用sudo chmod 644 你的视频文件调整。
  • 文件损坏:确认视频文件本身没问题,比如在树莓派上用mpv或者ffplay播放试试,避免上传本身就损坏的文件。
  • 网络限制:树莓派是不是在局域网里,目标服务器有没有白名单?可以先试试用curl模拟请求,比如curl -X POST -F "video=@/home/pi/recordings/test_video.mp4" https://your-api-endpoint.com/upload,看能不能成功。

先试试上面的方法,尤其是Postman生成代码对比,大概率能解决问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:24:52