Доступ к файлам в POST в NUXT3 API

Я пытаюсь понять, как ожидается доступ к данным файла в методе POST.

В ExpressJS эти данные обычно доступны через как это:

Однако не определено в конечной точке сервера Nuxt3. Нужно ли использовать промежуточное программное обеспечение сервера для включения файлов в запрос? Или есть другие способы добиться этого?

Редактировать 1:

Я смог напечатать наше тело, используя const body = await useBody(req);

Однако теперь я изо всех сил пытаюсь понять, как правильно его разобрать.

3 ответа

ИспользоватьreadBody.

      export default defineEventHandler(async (event) =>
  const body = await readBody(event)
  return { body } 
})

Примечание:useBodyне рекомендуется заменять на readBody.

Я боролся с той же проблемой и закончил сformidable.

Мой рабочий файл поста выглядит так:

      import formidable from "formidable";

export default defineEventHandler(async (event) => {
  const form = formidable({ multiples: true });

  await new Promise((resolve, reject) => {
    form.parse(event.node.req, (err, fields, files) => {
      Object.keys(files).map((fileName) => {
        // do something with file
      })

      resolve();
    });
  });
})

Обещание необходимо, чтобы загрузка нескольких файлов работала правильно. См. https://github.com/unjs/h3/issues/43#issuecomment-1069225214 .

Вы можете разобрать полученные предметы:

      import { useBody } from 'h3'

const body = await useBody(req);

const { files } = body;
Другие вопросы по тегам