Обработка загрузки файлов с помощью API-интерфейса Next.js App Router, предназначенного только для серверной части — MulJavascript

Форум по Javascript
Ответить
Anonymous
 Обработка загрузки файлов с помощью API-интерфейса Next.js App Router, предназначенного только для серверной части — Mul

Сообщение Anonymous »

Я создаю проект Next.js API только для серверной части (

Код: Выделить всё

npx create-next-app@latest --api
), который обслуживает интерфейс, размещенный на другой платформе (React Native, веб-приложение и т. д.).
Мне нужно обрабатывать загрузку файлов (multipart/form-data), но я сталкиваюсь с некоторыми проблемами.
Текущий подход
Я попробовал использовать Multer, который отлично работает в Express или Pages Router, вот так:

Код: Выделить всё

import multer from 'multer'
import { v4 as uuidv4 } from 'uuid'

const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/temp')
},
filename: function (req, file, cb) {
cb(null, `${uuidv4()}-${file.originalname}`)
}
})

export const upload = multer({ storage })
Но это не работает в маршрутизаторе приложений Next.js ()[/b] потому что:
  • Маршруты API в App Router используют стандартные объекты веб-запроса, а не Express req/.
  • Промежуточное ПО, такое как next-connect и upload.single('file'), несовместимо.
  • Код: Выделить всё

    req.cookies
    и req.body не существуют одинаково, что приводит к ошибкам TypeScript и времени выполнения.


Подробнее здесь: https://stackoverflow.com/questions/798 ... er-doesn-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»