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

使用Dropbox Saver上传录制视频时遇413请求实体过大错误

解决Dropbox Saver上传录制视频时的413请求过大错误

我帮你分析下这个问题的根源,以及对应的解决方案:

为什么会出现413错误?

你遇到的核心问题是用错了工具:Dropbox Saver的设计初衷是帮用户把网上的文件(通过HTTP/HTTPS URL)保存到自己的Dropbox,而不是上传本地生成的视频Blob。

你传入的Data URI是base64编码后的本地视频数据,这会带来两个问题:

  • Base64编码会让文件体积比原Blob大33%,哪怕1秒的短视频,编码后的长度也可能超出Dropbox服务器对请求内容的限制;
  • Dropbox Saver的files.url字段只接受远程URL,当它尝试处理你的Data URI时,会把整个编码后的字符串当作请求的一部分发送,直接触发"请求实体过大"的413错误。

正确的解决方案:用Dropbox直接上传API

既然你要上传本地录制的视频,应该使用Dropbox的filesUpload API(属于官方JavaScript SDK)来直接上传Blob对象,这才是针对本地文件上传的正确方式。

步骤1:引入Dropbox SDK

先在你的HTML中添加官方SDK的脚本:

<script src="https://unpkg.com/dropbox/dist/Dropbox-sdk.min.js"></script>

步骤2:重写上传函数

替换原来的saveToDropboxCustom函数,直接使用录制生成的Blob上传:

function saveToDropboxCustom() {
  // 注意:这里的access token需要通过Dropbox OAuth授权流程获取
  // 建议通过后端处理授权,不要在前端暴露长期有效的token
  const dbx = new Dropbox.Dropbox({ 
    accessToken: 'USER_AUTHORIZED_ACCESS_TOKEN' 
  });

  // 直接从Video.js Record获取录制好的视频Blob
  const videoBlob = player.recordedData.video;
  // 可选:把Blob转为File对象(API也支持直接传Blob)
  const videoFile = new File([videoBlob], 'my-recorded-video.mp4', { 
    type: videoBlob.type 
  });

  // 调用Dropbox上传接口
  dbx.filesUpload({
    path: '/my-recorded-video.mp4', // 视频在Dropbox中的保存路径
    contents: videoFile,
    mode: 'add' // 如果文件已存在,自动重命名;可选'overwrite'覆盖或'fail'报错
  })
  .then(response => {
    alert("Success! Video saved to your Dropbox.");
    console.log('上传详情:', response);
  })
  .catch(error => {
    console.error('上传失败:', error);
    alert('保存到Dropbox失败:' + error.message);
  });
}

重要提醒:关于授权

直接在前端写死access token是不安全的,正确的授权流程应该是:

  1. 去Dropbox开发者控制台创建你的应用,获取App Key;
  2. 使用dbx.auth.getAuthenticationUrl生成授权链接,引导用户登录并授权你的应用;
  3. 用户授权后会返回一个code,你需要通过后端用这个code交换成access token(避免在前端暴露App Secret)。

额外优化:删掉多余的Data URI转换

你原来代码里把Blob转成Data URI的步骤完全没必要,直接用player.recordedData.video这个Blob对象就能完成上传,既省内存又避免了编码带来的体积膨胀问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:03:35