es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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

Tags:  , , , ,

Answer

  1. Avatar for 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:

    let headers = {
        'Content-Type': 'multipart/form-data',
        'Authentication': 'Bearer ...'
    };
    
    try {
        let response = await axios.post(url, formData, { headers });
    } catch(err) {
        // Hacer algo
    }
    

    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.

Comments are closed.