#node.js #postman #multer #multer-gridfs-storage
Вопрос:
Я пытаюсь загрузить изображение на свой node.js сервер и когда я ничего не загружаю и просто отправляю запрос на публикацию без изображения, это работает нормально, но всякий раз, когда я пытаюсь опубликовать изображение node.js показывает ошибку в консоли
вот ссылка на публикацию «http://localhost:3001/databaseGym/logo» вот мой код для обработки почтовой операции по этой ссылке
Router.post('/logo', upload.single('file'), (req, res) => {
console.log("working");
//res.json({ file: req.file });
res.send("done");
});
а вот мой код для загрузки в upload.single()
// Create storage engine
const storage = new GridFsStorage({
url: url,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'logo'
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
а вот скриншот приложения почтальон, через которое я отправляю изображение
и вот в чем ошибка
MulterError: Unexpected field
at wrappedFileFilter (D:web devgym websiteserver_gymnode_modulesmulterindex.js:40:19)
at Busboy.<anonymous> (D:web devgym websiteserver_gymnode_modulesmulterlibmake-middleware.js:114:7)
at Busboy.emit (node:events:394:28)
at Busboy.emit (D:web devgym websiteserver_gymnode_modulesbusboylibmain.js:38:33)
at PartStream.<anonymous> (D:web devgym websiteserver_gymnode_modulesbusboylibtypesmultipart.js:213:13)
at PartStream.emit (node:events:394:28)
at HeaderParser.<anonymous> (D:web devgym websiteserver_gymnode_modulesdicerlibDicer.js:51:16)
at HeaderParser.emit (node:events:394:28)
at HeaderParser._finish (D:web devgym websiteserver_gymnode_modulesdicerlibHeaderParser.js:68:8)
at SBMH.<anonymous> (D:web devgym websiteserver_gymnode_modulesdicerlibHeaderParser.js:40:12)
Ответ №1:
Вам следует изменить параметр в Postman с image
на file
, как вы указываете имя свойства в конечной точке POST:
// you specify the `file` as the fieldname
Router.post('/logo', upload.single('file'), (req, res) => {
console.log("working");
//res.json({ file: req.file });
res.send("done");
});
Из документов:
.single(fieldname)
:Примите один файл с таким именем
fieldname
. Один файл будет храниться вreq.file
.
Комментарии:
1. Спасибо, понял 🙂