Tengo problemas para cargar una imagen en una carpeta local usando Node y Multer. La respuesta que recibo es exitosa, pero la imagen no se guarda en la carpeta. Ya he perdido una semana tratando de arreglarlo.
Y sí, he comprobado la ruta de destino, por si te lo preguntas.
Esta es mi interfaz:
<form id="tasasImage" enctype="multipart/form-data" style="display: flex; flex-direction: column;"> <input type="file" name="photo" id="photo" class="file"> <br> <div id="uploadImg" class="btn btn-primary">ENVIAR</div> </form> <script> $("#uploadImg").click(function () { if ($('#photo').val().length > 0) { var formData = new FormData($('#tasasImage')[0]); console.log([...formData]) $.ajax({ url: "", data: formData, type: "POST", processData: false, contentType: false, success: function(r){ console.log('Uploaded successfully'); $("#photo").val(''); }, error: function (e) { console.log("some error", e); } }); } </script>Y el back-end:
var storageTasas = multer.diskStorage({ destination: function(req, file, callback) { callback(null, config.urlBase+'public/images/tasas'); }, filename: function(req, file, callback) { var name = now+'-'+file.originalname; callback(null, name); } }) var uploadTasas = multer({ storage: storageTasas }).single('photo'); const tasasUploadImage = (req, res) => { uploadTasas(req, res, (err) => { if (err) { console.error(err); } else {console.log('Ssuccessfully Uploaded') }; }) res.send({'file': now}); } router.post('/admin/aliados/tasas/:id', adminController.tasasUploadImage);La url que está pasando vacía en el script JQuery/Client, debería ser url: /admin/aliados/tasas/1234
Los datos del formulario deberían ser así var formData = new FormData($('#tasasImage'));
carga simple de archivos multiparte con express.js y multer con ajax