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.

No se puede obtener req.file cuando envío un POST con un archivo de Excel.

Mi backend funciona cuando envío un archivo de Excel a través de Postman. El archivo se carga correctamente, por lo que funciona bien desde el backend. Por favor, vea la siguiente imagen:

Sin embargo, cuando intento hacer lo mismo desde el frontend, mi req.file no está definido:

Error:

TypeError: no se puede leer la propiedad ‘nombre de archivo’ de indefinido
en C: \ music_store \ oms_server \ routes \ file.js: 18:31

Aquí está el código del frontend:

export async function postExcel({ commit }, formData) {

console.log (“Entrando a postExcel”);
console.log(formData);

const option={
method: ‘POST’,
body: formData };

await Vue.axios.post(`http://localhost:5000/uploadExcel`, formData, {
    headers:{
        'Content-Type': 'multipart/form-data'
    } })
.catch((error) => {
    console.log ("Error al crear el archivo en la base de datos: ", error.message);
}).finally(() => {
    console.log ("Solicitud de formData resuelta");
});

}

Aquí está el código del backend:

router.post(‘/uploadExcel’, excelUpload.single(‘file’), async (req= request, res = response) => {

try {
const name = req.file.filename;
const fileJson= {
“name”: “NA”,
“route”: ‘/uploads’,
}
fileJson[“name”] = name;

const file = new File(fileJson);
await file.save();
res.json({
    "response": "Archivo guardado"
});

}
catch (err) {
console.log(err);
res.status(500).send(err.message);
}

})

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el backend está funcionando correctamente al recibir un archivo de Excel a través de Postman, pero al tratar de hacer lo mismo desde el frontend, el objeto req.file aparece como no definido. El mensaje de error indica que el código está intentando acceder a la propiedad “filename” de un objeto indefinido.

    En el código del frontend, el objeto FormData se está pasando como “body” de la solicitud POST. Los encabezados se establecen para indicar que se está enviando multipart/form-data. Sin embargo, no está claro qué se está pasando como parámetro “formData” y si contiene un objeto de archivo con el nombre de campo adecuado.

    En el código de backend, hay una ruta configurada para manejar la solicitud POST. Se está utilizando el middleware “excelUpload” para manejar la subida de archivos y se espera que el nombre del campo sea “file”. El archivo cargado luego se guarda en la base de datos.

    Según la información proporcionada, es posible que el problema esté en cómo se construye y se pasa el objeto FormData en el código del frontend. También es posible que haya un problema con el nombre del campo o el middleware que se está utilizando en el código del backend.

Comments are closed.