Estoy creando una aplicación web que requiere recibir archivos binarios en un punto final del lado del servidor, convertir esos archivos binarios a FormData y luego enviarlos a otro punto final. El segundo punto final solo acepta "multipart/form-data".
Estoy usando axios para crear las solicitudes y NodeJS en el servidor.
Los archivos se publican desde el cliente como datos de formulario, pero no puedo manipularlos como tales una vez que llegan al servidor.
¿Cómo obligo archivos binarios a FormData en mis scripts del lado del servidor?
Cliente:
const handleImageSubmit = async (attachments) => { try { let image if (attachments.length) { const formData = new FormData() for (let i = 0; i < attachments.length; i += 1) { formData.append( `files.${attachments[i].name}`, attachments[i], attachments[i].name ) } const config = { headers: { 'Content-Type': 'multipart/form-data' }, } image = await axios.post( '/api/proxy/upload', formData, config ) } console.log('Files dispatched to server') } catch (err) { console.error(err) } }Lado del servidor:
const upload = async (req, res) => { try { const data = new FormData() // Convert the binaries in req.body into FormData const myFiles = ... data.append('files', myFiles) const config = { method: 'post', url: `${process.env.API_URL}/upload`, headers: { Authorization: `Bearer ${req.headers['auth-token']}`, ...data.getHeaders() }, data: data, } const signal = await axios(config) res.json(signal.data) } catch (err) { console.error(err) res.status(fetchResponse?.status || 500).json(err) } }