使用api路由将文件从Nextjs上传到Django后端

问题描述 投票:0回答:1

我在后端使用 Django (DRF),在前端使用 Next.js 14。我可以毫无问题地上传小文件,但是当文件大小超过 100kb 左右时,API 请求就会陷入“待处理”状态。

这是表单在 page.js 中的外观:

const handleSubmit = async (e) => {
    e.preventDefault();
    const formData = new FormData();
    if (avatar) formData.set("avatar", avatar);
    formData.set("bio", bio);

    const res = await fetch(`/api/auth/profile/`, {
      method: "POST",
      body: formData,
    });

    const updatedProfile = await res.json();
  };

这是 api/route.js 文件的样子:

export async function POST(request, res) {
  const access = await getAccessTokenServer();
  if (!access)
    return NextResponse.json(
      { detail: "Kullanıcı girişi bulunamadı" },
      { status: 401 }
    );

  const formData = await request.formData();

  const response = await fetch(
    `${process.env.API_URL}/api/users/me/profile_update/`,
    {
      method: "POST",
      headers: { Authorization: `Bearer ${access}` },
      body: formData,
    }
  );

当我直接从page.js文件向Django后端发送请求时,上传大文件没有问题。但是,当我将请求发送到 api/route 地址,然后发送到 Django 时,该文件不会到达 Django。

我尝试像这样设置 api 路由的配置。

export const config = {
  api: {
    bodyParser: {
      sizeLimit: '10mb',
    },
  },
  // Specifies the maximum allowed duration for this function to execute (in seconds)
  maxDuration: 5,
}
django next.js django-rest-framework
1个回答
0
投票

我也有同样的问题,你用的是NGINX吗?

© www.soinside.com 2019 - 2024. All rights reserved.