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

如何使用JavaScript提交HTML video标签中嵌入的录制视频及表单数据

解决方案

错误原因

你当前实现不生效的核心原因是:window.URL.createObjectURL()生成的是浏览器为本地Blob对象创建的临时访问地址,仅在当前页面会话内有效,本质是一串指向内存资源的标识字符串,并不是实际的视频文件。你拆分该字符串得到的只是无意义的字符片段,提交到服务端自然无法得到正确的视频文件。

修改步骤

1. 调整代码块1逻辑,全局存储录制的视频Blob

首先在全局作用域声明变量存储录制结果,生成视频Blob后给该变量赋值,方便提交逻辑调用:

<video controls id='video'></video>
// 全局作用域声明变量存储录制好的视频Blob
let recordedVideo = null;

navigator.mediaDevices.getUserMedia(constraintObj)
  .then(function(mediaStreamObj){
    let mediaRecorder = new MediaRecorder(mediaStreamObj);
    let vidData= [];

    mediaRecorder.start();
    if(mediaRecorder.state == 'recording'){
     timer();
    }
    mediaRecorder.ondataavailable = function(ev){
        vidData.push(ev.data);
    }
    // 录制10秒后执行逻辑
    setTimeout(()=>{
      stopRecording();
      mediaRecorder.stop();
      console.log(mediaRecorder.state);
      mediaRecorder.onstop = (ev)=>{
        let mediafile= new Blob(vidData, { 'type' : 'video/mp4;' });
        // 给全局变量赋值
        recordedVideo = mediafile;
        vidData= [];
        let videoURL = window.URL.createObjectURL(mediafile);
        document.getElementById('video').src = videoURL;
      }
      
      sendDataModal();
      sec =0;
    }, 10000);
  })
  .catch((err) => {
        var errName = err.name;
        document.getElementById('msgPanel').className = 'error'
        document.getElementById('msgPanel').textContent = errors[errName];
  });

2. 调整代码块2提交逻辑,直接添加Blob到FormData

删除之前拆分video.src的错误代码,直接将全局存储的Blob对象加入FormData:

let payload = new FormData();
payload.append('institution', institution.value);
payload.append('anonymity', anonimityOnOff);
payload.append('lat', latitude);
payload.append('long', longitude);
payload.append('today', timeStamp);

// 直接添加Blob对象到FormData
if(recordedVideo) {
  payload.append('mediafile', recordedVideo, "mediafile.mp4");
}

注意事项

发送FormData请求时,不要手动设置Content-Type: multipart/form-data请求头,浏览器会自动生成带分隔符的正确请求头,手动设置会导致服务端无法正常解析表单数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:00:05