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

Strapi v4图片上传功能问题求助:tmpWorkingDirectory配置疑问

Strapi 4.21.1 Heroku环境下上传图片提示需配置tmpWorkingDirectory的解决方法

Heroku的文件系统是临时且有特定权限限制的,Strapi处理文件上传时,会先将文件暂存到临时工作目录,再移动到目标存储目录。即便public/uploads存在,默认的临时目录可能因权限或路径问题无法被Strapi正常使用,因此需要显式配置可读写的tmpWorkingDirectory。

1. 配置upload插件的临时目录

在项目根目录下新建或修改config/plugins.js,添加以下配置:

module.exports = ({ env }) => ({
  upload: {
    config: {
      provider: 'local',
      providerOptions: {
        // 指定Heroku可读写的临时目录
        tmpWorkingDirectory: '/tmp/strapi-upload-tmp',
        // 适配Heroku环境的目标上传目录绝对路径
        uploadsDir: `${process.env.PWD}/public/uploads`,
        publicPath: '/uploads',
      },
    },
  },
});

2. 确保临时目录启动时自动创建

Heroku重启后临时目录会被清空,需在启动脚本中添加创建目录的命令,修改package.json的scripts字段:

{
  "scripts": {
    "start": "mkdir -p /tmp/strapi-upload-tmp && node server.js",
    "develop": "strapi develop",
    "build": "strapi build",
    "strapi": "strapi"
  }
}

3. 额外注意事项

  • Heroku本地存储是临时的,上传文件会在应用重启后丢失,生产环境建议切换到AWS S3、Cloudinary等云存储服务,只需替换provider为对应插件并配置相关参数即可。
  • 若public/uploads未被纳入Git,可在start脚本中追加mkdir -p public/uploads确保目录存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:02:45