пытаюсь загрузить изображение в api nodejs, но оно возвращается с ошибкой

#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. Спасибо, понял 🙂