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

部署在Heroku的Express应用运行后用户头像及封面图丢失问题咨询

问题根因

Heroku 平台的 dyno 采用临时文件系统:每次应用重新部署、dyno 自动重启(Heroku 每24小时会强制重启所有运行中的dyno)、或者应用扩容/缩容时,所有写入到本地磁盘的文件都会被清空重置。你本地运行正常是因为本地开发环境的文件系统是持久化存储的,和Heroku的运行机制完全不同。

从你提供的主代码来看,你配置了express.static映射public目录,同时注册了/uploads路由处理上传请求,说明当前上传逻辑是将文件写入了Heroku的本地磁盘,这正是文件消失的直接诱因。

修复方案

  • 替换存储方案:将用户上传的头像、封面图等资源存储到第三方对象存储服务中,这类服务专门用于静态资源存储,提供持久化存储和CDN加速能力。你只需要在用户上传时将文件发送到对应服务的接口,拿到资源的公网访问链接后存入你的MongoDB数据库即可,不需要再存储到应用本地磁盘。
  • 调整上传逻辑:修改你uploadRoutes路由对应的处理代码,把原本使用fs模块写入本地磁盘的逻辑,替换为对应对象存储服务的SDK上传逻辑。
  • 若不想额外接入第三方服务,也可以选择将小体积图片转为Base64格式存入MongoDB,但该方案会额外增加数据库的存储压力,不推荐生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:27:04