Necesito cargar un archivo con algunos metadatos en un objeto json usando la función nativa de JavaScript "buscar" en el lado del cliente y expresar con el middleware multer en el lado del servidor.
cliente:
const data = new FormData() data.append('video', video) data.append('userId', userId) data.append('property', property) fetch('/api/video', { method: 'POST', // headers: { // Accept: 'application/json', // 'Content-Type': 'application/json', // }, // body: JSON.stringify({ userId, property }) body: data }).then(res => { console.log( res ) })servidor:
const express = require('express') const multer = require('multer') const app = express() app.use(express.urlencoded()) app.use(express.json()) const multerUpload = multer({ dest: './videos' }) const uploadDebugged = multerUpload.single('video') function debugMulter(req, res) { uploadDebugged(req, res, (err) => { console.log(req.body) console.log('multer error:', err) }) res.send() } app.post('/api/video', debugMulter)el registro del servidor:
{ video: 'undefined', userId: '5', property: '1' } multer error: undefinedMulter dice que no hay ningún error pero que la carpeta 'video' todavía está vacía.
Me encantaría una solución que use encabezados en la búsqueda para permitir la publicación de datos y archivos json en el servidor.
EDITAR finalmente funciona, el objeto de video estaba vacío en el lado del servidor, así que buscar, FormData y multer funcionan bien.
Debe pasar un objeto FormData a buscar para cargar el archivo, no convertirlo en un objeto URLSearchParams.
Intente pasar uploadDebugged a la ruta y luego acceda al archivo desde req.file
const express = require('express') const multer = require('multer') const app = express() app.use(express.urlencoded()) app.use(express.json()) const multerUpload = multer({ dest: './videos' }) const uploadDebugged = multerUpload.single('video') function debugMulter(req, res) { console.log(req.body) console.log(req.file) res.send() } app.post('/api/video', uploadDebugged, debugMulter)