reactjs TypeError:req.formData不是函数,在next js API中

3ks5zfa0  于 12个月前  发布在  React
关注(0)|答案(3)|浏览(121)

下面是我的nextjs路由的代码

import { NextRequest, NextResponse } from 'next/server';

export const config = {
  runtime: 'edge',
};

export default async function POST(req: NextRequest): Promise<Response> {
  const data = await req.formData();
  console.log(data);
  const file: File | null = data.get('file') as unknown as File;
  
  if (!file) {
    return NextResponse.json({ success: false });
  }

  return NextResponse.json({ success: true });
}

我试图在请求中发送一个文件与Content-type: multipart/form-data,但它抛出错误,在未来的js API。我错过了什么?关于egde环境有什么我应该考虑的吗?我也试着把它改为node js环境,但错误仍然是一样的。

xxb16uws

xxb16uws1#

不知道这是否可以作为一个答案,但我正在寻找相同的解决方案,刚刚发现这个discussion,它解释说,req.formData()可以处理,只有当你使用下一个App Routes,而不是Pages Routes..老实说,我不打算改变我的项目的整个结构,所以我仍然在寻找一个解决方案,但如果它帮助你,那么有选择

iqih9akk

iqih9akk2#

您需要使用req.json()而不是req.formData

您的代码应该如下所示:

import { NextRequest, NextResponse } from 'next/server';

export const config = {
  runtime: 'edge',
};

export default async function POST(req: NextRequest): Promise<Response> {
  const data = await req.json();
  const file: File | null = data.get('file') as unknown as File;
  
  if (!file) {
    return NextResponse.json({ success: false });
  }

  return NextResponse.json({ success: true });
}
2q5ifsrm

2q5ifsrm3#

检查req.json()函数是否正确解析表单数据。您可以在控制台中查看。

相关问题