React上传文件到Express.js转码接口返回500错误排查求助
问题原因及解决方案
核心错误:前后端上传文件的字段名不匹配
你前端代码中通过FormData上传文件时,使用的字段名是file:
data.append('file', file)
但后端接口中读取文件时,使用的字段名是video:
let video = req.files.video;
字段名不匹配导致video变量为undefined,后续执行video.mv(oldVideoPath)时触发未定义方法的异常,最终返回500错误。
修复方案(二选一即可):
- 前端修改:将
data.append('file', file)改为data.append('video', file) - 后端修改:将
let video = req.files.video改为let video = req.files.file
其他可能引发错误的潜在问题
- 异步操作顺序错误:
video.mv()是异步方法,你当前代码没有等待文件写入完成就直接调用ffmpeg读取文件,可能出现文件不存在的错误。建议将后续逻辑放在mv方法的回调函数中,或者如果该方法支持Promise则使用await等待执行完成。 - 目录不存在:需要确认
./public/uploads和./public/converted两个目录已提前创建,否则写入文件时会触发IO异常。 - 文件大小限制:确认你使用的文件上传中间件(如express-fileupload)配置的最大文件大小限制,大于你上传的视频文件体积。
内容的提问来源于stack exchange,提问作者alekszych
相关产品推荐
相关产品推荐

