首页 > 解决方案 > 使用 Node.js 同时接受文件和文本输入

问题描述

我有这个表单,有两种类型的输入,文件和文本。我试图将图像文件(使用 Multer)保存在本地目录中。和数据库中的文本(使用猫鼬)。

<form
     action="publish"
     method="POST"
     enctype="multipart/form-data"
    >
     <input type="text" name="textinput" placeholder="Title" />
     <input type="file" name="imginput" />
</form>

当我提交表单并尝试处理两个输入(文件和文本)时,由于“enctype =“multipart/form-data”,它会阻止我访问文本。我删除了 enctype 的东西,这次我无法访问图像文件。

async function addText(userInput) {
  const text = new Text({ text: userInput });
  
  const result = await text.save();
  console.log(result);
};

app.post("/publish", (req, res) => {

  // init upload
  const upload = multer({
    storage: storage,
    limits: { fileSize: 1000000 },
    fileFilter: (req, file, cb) => {
      checkFileType(file, cb);
    },
  }).single("imginput");

  upload(req, res, (err) => {
    if (err) {
      res.send(err);
    } else {
      if (req.file == undefined) {
        res.send("no file selected");
      } else {
        res.send("file uploaded");
      }
    }
  });
 
  addText(req.body.textinput);
};

有没有一种方法可以处理两个输入?

标签: javascripthtmlnode.js

解决方案


推荐阅读