Tengo un formulario complejo con algunas cargas de archivos, y lo hice usando react-hook-form con react-dropzone para cargar archivos, los datos del formulario se almacenan en el contexto de reacción.
Ahora, en el último paso del formulario, cargo datos de react-context y los envío a Strapi CMS a través de las rutas API next.js, y todo, excepto la carga de archivos, funciona bien. Siempre me sale el error 500, pero desde el cliente de Altair lo puedo subir normalmente.
archivos de datos que estoy enviando miradas (logotipo en el código de abajo):
cargar archivos next.js api ruta:
const fRes = await api.upload('api/upload-files', data.logo)api.upload:
async upload(endpoint: string, body) { const response = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'multipart/form-data', }, body: JSON.stringify(body), }) if (!response.ok) { throw new Error(`Error: ${response.status}`) } const res = await response.json() return res }páginas/api/subir-archivos:
import { NextApiRequest, NextApiResponse } from 'next' import { apolloClient } from 'lib/apolloClient' import { UPLOAD_FILES_MUTATION } from 'lib/models/Registration' export default async (req: NextApiRequest, res: NextApiResponse) => { console.log(req.body) const { errors, data } = await apolloClient.mutate({ mutation: UPLOAD_FILES_MUTATION, variables: { files: req.body }, }) if (errors) { return res.status(400).json(errors) } return res.status(200).json(data) }mutación de graphql:
mutation ($files: [Upload]!) { multipleUpload(files: $files) { data { id attributes { name } } } }