В Next.js 13, при использовании TypeScript, для получения файла из запроса можно воспользоваться следующими шагами:
1. Установите необходимые пакеты, включая next
, multer
, formidable
, если они еще не установлены, с помощью команды:
npm install next multer formidable
2. Создайте файл api/upload.ts в директории pages/api с кодом для загрузки файла из запроса:
import { NextApiRequest, NextApiResponse } from 'next'; import multer from 'multer'; const upload = multer({ dest: 'uploads/' }).single('file'); export default function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method === 'POST') { upload(req, res, (err: any) => { if (err instanceof multer.MulterError) { // Обработка ошибок Multer console.error(err); res.status(400).json({ message: 'Ошибка загрузки файла' }); } else if (err) { // Обработка других ошибок console.error(err); res.status(500).json({ message: 'Ошибка сервера' }); } else { // Если загрузка прошла успешно console.log(req.file); res.status(200).json({ message: 'Файл загружен' }); } }); } else { // Если метод запроса не POST res.status(405).json({ message: 'Метод не разрешен' }); } }
3. Запустите Next.js сервер с помощью команды:
npm run dev
4. Теперь вы можете отправлять POST-запросы на /api/upload с помощью обычной формы, содержащей поле для загрузки файла с именем "file". При успешной загрузке файла, он будет сохранен в папке "uploads" и будет выведено сообщение "Файл загружен" в формате JSON.
Заметьте, что в коде выше используется пакет multer
для обработки загрузки файла, а пакет formidable
встроен в Next.js и позволяет обрабатывать мультипарт запросы. Если вам требуются дополнительные настройки или обработка запроса, вы можете изменить код соответственно вашим потребностям.