Saltar al contenido

Cómo cargar un archivo usando multer o body-parser

Ya no tienes que buscar más por todo internet porque llegaste al espacio correcto, poseemos la respuesta que buscas y sin complicarte.

Solución:

multer() devuelve un generador de middleware que usa la configuración que especificó, por lo que no puede pasar su valor devuelto directamente a app.use(). Puede ver todos los tipos de middleware que puede generar en la documentación, pero normalmente el middleware generado se agrega a nivel de ruta en lugar de globalmente como los otros analizadores de cuerpo. Esto se debe a que normalmente pasará el nombre de los campos de archivo que espera.

Por ejemplo, esto aceptará un solo archivo (junto con cualquier campo que no sea de archivo) cuyo nombre de campo de formulario sea foo:

var upload = multer(
  dest: path.join(__dirname, '../public/upload/temp')
);

// ...

app.post('/upload', upload.single('foo'), function(req, res) 
  if (req.file) 
    console.dir(req.file);
    return res.end('Thank you for the file');
  
  res.end('Missing file');
);

También, body-parser actualmente no exporta un multipart/form-data– middleware con capacidad, por lo que no puede usar ese módulo para manejar archivos cargados (bueno, a menos que pase un codificado en base64 string en un application/x-www-form-urlencoded forma o algo así, pero eso es mucho menos eficiente).

Aquí está el código básico para cargar archivos en MEAN, verifique

HTML


CÓDIGO DEL LADO DEL CLIENTE

app.controller ('myctrl',function($scope,$http)

  $scope.upload = function () 
            var file = angular.element(document.querySelector('#file')).prop("files")[0];
                $scope.files = [];
                $scope.files.push(file);
                $http(
                    method: 'POST',
                    url: '/users/upload',
                    headers:  'Content-Type': undefined ,
                    transformRequest: function (data) 
                        var formData = new FormData();
                        formData.append('model', angular.toJson(data.model));
                        formData.append('file', data.files[0]);
                        return formData;
                    ,
                    data:  model:  title: 'hello', files: $scope.files 

                ).success(function (res) 
                    console.log(res)
                );
        


);

CÓDIGO DEL LADO DEL SERVIDOR

var multer  = require('multer');
var mkdirp = require('mkdirp');

var storage = multer.diskStorage(
  destination: function (req, file, cb) 
    //var code = JSON.parse(req.body.model).empCode;
    var dest = 'public/uploads/';
    mkdirp(dest, function (err) 
        if (err) cb(err, dest);
        else cb(null, dest);
    );
  ,
  filename: function (req, file, cb) 
    cb(null, Date.now()+'-'+file.originalname);
  
);

var upload = multer( storage: storage );

router.post('/upload', upload.any(), function(req , res)
    console.log(req.body);
    res.send(req.files);
);

Tienes la posibilidad dar difusión a este post si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *