Tengo un gran dolor de cabeza para combinar el complemento de carga de archivos angulares con multer para que sea completamente SPA. Me limité a subir varios archivos a través de multer.
Así es como se ven mis opciones de multer: (archivo node route.js)
var upload = multer({ storage: storage, limits: { //fileSize: 819200 } }).array('myFile');este es mi POST: (archivo node route.js)
router.post('/add/file', function(req, res, next) { upload(req,res,function(err) { console.log(req.files); if(err) { console.log("Error uploading file."); } }); });esto está dentro de mi controlador angular:
var uploader = $scope.uploader = new FileUploader({ url: 'http://localhost:3000/add/file', alias: 'myFile' }); uploader.filters.push({ name: 'imageFilter', fn: function(item /*{File|FileLikeObject}*/, options) { var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|'; return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1; } }); Agrega solo el primer archivo y se atasca. No recibo ningún error, simplemente se atasca. Toda la página funciona y puedo enviar archivos nuevamente, pero nuevamente solo se cargará el primer archivo. La consola muestra que req.files tienen solo 1 archivo (el primero)
No pude encontrar ningún tutorial ni nada en Internet con el complemento de carga de archivos angulares, por eso les pregunto a ustedes
No estoy seguro de si ya se dio cuenta de esto o no, pero al enviar varios archivos, la función 'uploadAll' no enviará el siguiente archivo hasta que reciba una respuesta del servidor. Así que la ruta debería verse así. También vi en algún lugar de la documentación que la respuesta debe ser json ... aunque no he probado si esto es cierto o no
router.post('/add/file', function(req, res, next) { upload(req,res,function(err) { console.log(req.files); if(err) { console.log("Error uploading file."); } else { res.status(200).json({response: 'some response...'}) } }); });