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

React Native向Flask服务器传视频报400错误求助

React Native 上传视频到 Flask 出现 400 错误的解决方案

问题分析

Postman 能正常上传但 React Native 端返回 400,核心原因在于FormData 构造不符合要求以及手动设置 Content-Type 导致请求格式错误。

具体修正方案

1. 修正客户端 FormData 构造

React Native 的 FormData 无法直接解析 DocumentPicker 返回的原始对象,必须手动构造包含 uri、type、name 的文件对象,才能被服务器正确识别。同时需移除手动设置的 Content-Type 头(Axios 会自动生成带 boundary 的正确请求头,手动设置会丢失关键的 boundary 参数)。

修改后的客户端上传代码:

const uploadVideo = async () => {
  if (singleFile != null) {
    console.log({ singleFile })
    console.log('Uri: ', singleFile.uri)
    const formdata = new FormData();

    // 构造符合 multipart/form-data 要求的文件对象
    const fileParam = {
      uri: singleFile.uri,
      type: singleFile.type || 'video/mp4', // 优先使用文件自带的 MIME 类型,兜底用通用视频类型
      name: singleFile.name
    };

    formdata.append('video', fileParam);

    axios({
      method: "POST",
      url: `${baseUrl}uploadvideo`,
      data: formdata, // 无需手动设置 Content-Type,Axios 会自动处理
    })
    .then(res => console.log(res.data))
    .catch(err => console.log("err: ", err));

  } else {
    alert('请先选择文件');
  }
};

2. 增强服务器端错误处理(可选)

原服务器代码直接读取 request.files['video'],若客户端请求格式错误会直接抛出异常返回 400,添加判断后能返回更明确的错误信息,便于调试:

import os
from flask import jsonify

@app.route('/uploadvideo', methods=['POST'])
def upload2():
    # 检查是否存在视频字段
    if 'video' not in request.files:
        return jsonify({'error': '未上传视频文件'}), 400
    video = request.files['video']
    # 检查文件名是否为空
    if video.filename == '':
        return jsonify({'error': '未选择文件'}), 400
    # 确保保存目录存在
    save_dir = 'data/training_data/video/'
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    # 保存文件
    video.save(os.path.join(save_dir, video.filename))
    return video.filename

关键原因说明

  • FormData 格式问题:React Native 环境下,FormData 要求文件参数必须显式提供 uri、type、name 三个属性,直接传入 DocumentPicker 返回的对象会导致服务器无法解析文件。
  • Content-Type 错误:手动设置 multipart/form-data 会丢失自动生成的 boundary 分隔符,而服务器依赖 boundary 来区分表单中的不同字段,缺少它会导致请求解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:25:14