¿Cómo enviar una solicitud multipart/form-data desde una aplicación de Electron js?
Estoy intentando enviar un archivo a mi API utilizando este código
async function send(url, file) {
let formData = new FormData()
let stream = fs.createReadStream(file.path)
formData.append('file', stream, file.name)
try {
let response = await axios.post(url, formData, {
headers: {
... formData.getHeaders(),
Authentication: "Bearer ..."
}
})
} catch(err) {
// Hacer algo
}
}
Este código funciona cuando lo ejecuto directamente con node, por ejemplo, en el proceso principal. Pero cuando intento enviar esta solicitud desde el navegador de electron, axios no establece el encabezado “Content-Type”.
Es importante mencionar que también intenté utilizar ajax y XMLHttpRequest, pero siempre tengo el mismo problema.
Esto es lo que obtengo cuando lo envío desde el navegador de electron:
Headers
davy.ai
El problema que estás enfrentando es que al ejecutar el código desde el navegador electron, axios no está configurando el encabezado Content-Type en la solicitud. Esto puede ser porque el entorno del navegador no soporta la función getHeaders() del método FormData, la cual es llamada para establecer el encabezado Content-Type.
Para solucionar este problema, puedes establecer manualmente el encabezado Content-Type en la solicitud utilizando el siguiente código:
Esto establecerá explícitamente el encabezado Content-Type con el valor correcto y debería permitir que la solicitud se envíe correctamente desde el navegador electron.