如何在 NextJS 中读取 FormData

Iva*_*nko 8 javascript multipartform-data node.js typescript next.js

我想阅读 fetch 的正文。这是我发送的内容:

fetch('/api/foo', {
  method: 'POST',
  body: new FormData(formRef.current),
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在我只需要解析正文。但我不知道怎么办。我无法FormData在服务器端使用,因为它说ReferenceError: FormData is not defined。而且我也不能forEach在客户端上使用 like 。

我应该怎么办?

export default function sendMail(req: NextApiRequest, res: NextApiResponse): void {
    // console.log(req.body instanceof FormData);
    // req.body.forEach(console.log);
    console.log(req.body['name']);
    res.status(200).json({});
}
Run Code Online (Sandbox Code Playgroud)

use*_*488 17

你可以使用强大的.

npm install formidable
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中使用

import { NextApiRequest, NextApiResponse } from 'next'
import { Formidable } from "formidable";

//set bodyparser
export const config = {
  api: {
    bodyParser: false
  }
}

export default async (req: NextApiRequest, res: NextApiResponse) => {
  const data = await new Promise((resolve, reject) => {
    const form = new Formidable();

    form.parse(req, (err, fields, files) => {
      if (err) reject({ err })
      resolve({ err, fields, files })
    }) 
  })

  //return the data back or just do whatever you want with it
  res.status(200).json({
    status: 'ok',
    data
  })
}
Run Code Online (Sandbox Code Playgroud)

  • 需要禁用主体解析器。这对我来说是缺失的一块!谢谢。 (5认同)