已配置Multer仍无法将图片存入uploads文件夹,该如何解决相同报错?
Multer 存储图片至 uploads 文件夹报错排查方案
权限类报错(EACCES: permission denied)
- 确认运行 Node 服务的用户对
uploads文件夹具备读写权限。若文件夹是通过 root 权限手动创建,执行权限调整命令:chmod -R 755 ./uploads;Windows 环境可在文件夹属性的「安全」 tab 中,授予当前服务运行用户完全控制权限。 - 排查
uploads路径是否落在系统受保护目录下(如 Linux 的/root路径、Windows 的 System32 系统目录),受保护目录会禁止非系统进程写入。
路径类报错(ENOENT: no such file or directory)
- 不要硬编码相对路径配置存储位置,避免 Node 进程工作目录变化导致路径解析错误,推荐使用
path.join(__dirname, 'uploads')拼接生成绝对路径。 - 在 Multer 的
diskStorage配置中新增自动建目录逻辑,无需手动提前创建 uploads 文件夹:const fs = require('fs'); const path = require('path'); const multer = require('multer'); const upload = multer({ storage: multer.diskStorage({ destination: (req, file, cb) => { const uploadDir = path.join(__dirname, 'uploads'); // 目标目录不存在时递归创建 if (!fs.existsSync(uploadDir)) fs.mkdirSync(uploadDir, { recursive: true }); cb(null, uploadDir); } }) })
接口配置类异常
- 核对前端上传表单的文件字段名,和 Multer 接口中间件绑定的字段名完全一致,字段名不匹配会直接打断上传流程。
- 若服务处于反向代理(如 Nginx)后方,检查代理配置的请求体大小限制,超出阈值的大文件上传请求会被代理直接拦截,触发报错。
内容的提问来源于stack exchange,提问作者Yash Salvi
相关产品推荐
相关产品推荐

