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

Mongoose 6.18嵌入式Web服务器文件上传连接中断问题求助

问题排查与解决方法

前端配置修正

  • 移除手动设置的Content-Type和Content-Length请求头:使用axios发送FormData时,浏览器会自动生成带正确boundary分隔符的multipart/form-data请求头,同时计算并填充准确的Content-Length值,手动设置空的Content-Length会导致服务端无法识别完整请求长度,接收部分数据后直接断开连接。
  • 增加超时时间配置:大文件上传耗时较长,axios默认超时时间可能会主动断开未完成的请求,可根据文件大小合理调整超时阈值。

修正后的前端代码示例:

await axios.post(`http://${window.location.host}/upload`, data, {
  timeout: 300000 // 可根据实际情况调整,单位为毫秒
}).then((response) => {
  console.log(response);
  console.log(response.data.message);
  alert("File Upload successful"); 
}, (error) => {
  console.log(error);
  alert("File Upload not successful");
});

服务端配置排查

  • 确认编译配置中已开启MG_ENABLE_MULTIPART宏:未开启该宏的情况下,Mongoose不会解析multipart格式的请求,会直接断开连接。
  • 检查mg_file_upload_handler的参数配置:
    • 确认设置的上传存储目录存在且服务进程拥有写入权限,权限不足会触发写入失败直接断连
    • 确认max_size参数配置大于你需要上传的文件大小,超过大小限制时Mongoose会主动终止上传连接
  • 排查Mongoose事件循环阻塞问题:嵌入式环境中如果有其他同步耗时业务逻辑占住事件循环,会导致TCP缓冲区满后无法继续接收数据,触发连接断开,需将耗时逻辑改为异步处理,避免阻塞事件循环。
  • 检查设备内存占用:嵌入式设备内存有限,大文件上传过程中如果内存不足会触发异常断连,可适当调整Mongoose的接收缓冲区大小适配设备硬件条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:57:01