使用multer上传图片时出现ENOENT文件目录不存在错误求助
解决Multer上传图片的ENOENT错误
问题原因分析
你遇到的错误有两个核心原因:
- uploads目录不存在:Multer不会自动创建存储文件的目录,如果
./uploads/目录没手动创建,就会触发找不到目录的错误。 - 文件名包含非法字符:Windows系统下文件名不允许出现冒号(
:),而new Date().toISOString()生成的时间格式里带有冒号(比如2022-11-29T17:23:07.574Z),拼接成文件名后会导致路径无效。
解决方案
1. 修改代码解决目录与文件名问题
在代码里加入文件系统模块逻辑确保目录存在,同时替换文件名里的非法字符:
const multer = require("multer"); const fs = require("fs"); // 自动创建uploads目录,recursive: true支持递归创建父级目录 fs.mkdirSync('./uploads/', { recursive: true }); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './uploads/') }, filename: function (req, file, cb) { // 把ISO时间里的冒号替换成横杠,避免Windows文件名非法字符 const safeFilename = new Date().toISOString().replace(/:/g, '-') + file.originalname; cb(null, safeFilename); } }); const upload = multer({storage: storage});
2. 验证操作
- 重启你的Node.js服务器,让新的目录创建逻辑生效。
- 在Postman中重新发起上传请求,此时图片应该能正常保存到uploads目录中。
内容的提问来源于stack exchange,提问作者Utkarsh
相关产品推荐
相关产品推荐

