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

Vercel Serverless Functions 4.4MB限制下大视频上传方案选型咨询

解决Vercel上Next.js Server Actions传视频413 Payload Too Large的方案选择

核心问题复盘

本地通过配置serverActions.bodySizeLimit: '100mb'解决了视频上传的413错误,但部署到Vercel后,受限于Serverless Functions的4.4MB请求体上限,该配置失效。现有两个方案,我们逐一分析并给出最优解:

方案1:直接上传S3+后端后续处理(优化版)

原方案的安全隐患可通过S3预签名URL彻底解决,这也是大文件上传的标准实践:

  • 流程调整:
    1. 前端先向NestJS后端发起请求,携带视频元数据(文件名、大小、类型等)
    2. 后端验证元数据后,生成S3预签名URL(设置有效期、允许的文件大小/类型、指定存储路径),返回给前端
    3. 前端直接通过预签名URL将视频上传至S3(无需持有S3密钥)
    4. 上传完成后,前端通知后端触发压缩逻辑:后端从S3拉取原视频,执行现有压缩代码,将压缩后的视频存回S3,更新业务数据
  • 优势:
    • 完全绕过Vercel的请求大小限制,无需中转,上传效率更高
    • 预签名URL受控,避免未授权上传,解决原方案的安全问题
    • 复用现有NestJS压缩逻辑,改动成本低
  • 注意点:
    • 若视频超过100MB,可结合S3分片上传(AWS SDK支持断点续传),提升大文件上传稳定性

方案2:Next.js API端点流式上传

  • 问题分析:
    流式转发确实能绕过请求体大小限制,但Vercel Serverless Functions存在执行时间限制(免费版10秒,付费版最长90秒),大视频上传极易触发超时;同时中转流程会增加带宽消耗和延迟,整体效率不如直接传S3
  • 适用场景:仅适合小体积视频(<4.4MB),但你的场景是视频上传,显然不是最优选择

最优方案推荐

优先选择优化后的方案1(预签名URL上传),这是兼顾安全性、效率和兼容性的最优解,完全适配Vercel环境和你的技术栈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:40:22