Next.js API路由中出现正文超过1MB限制错误

如果我在Next.js上使用FormData将图像上载到服务器,我总是收到此错误。

我尝试了很多,但没有解决这个问题。

我的代码:

const changeValue = (e) => {
if (e.target.name === "avatar") {
      const file = e.target.files[0];
      const formData = new FormData();
      formData.append("image", file, file.name);
      try {
        const config = {
          Headers: {
            "Content-Type": "multipart/form-data",
          },
        };
        axios
          .post("/api/upload", formData, config)
          .then((res) => {
            setAvatar(res.data);
            setAvatarPreview(res.data);
          })
          .catch((err) => {
            console.log(err.message);
          });
      } catch (err) {
        console.log(err);
      }
    } 
}

解决方案

Body解析器的默认大小限制为1mb。您可以通过API路由导出的custom config object修改该值。

// /pages/api/upload.js

export const config = {
    api: {
        bodyParser: {
            sizeLimit: '4mb' // Set desired value here
        }
    }
}

请注意,API路由正文大小有限制,详情请参阅How to override the 4mb API Routes body size limit?。

相关文章