2015-09-07 3 views
0

Le code suivant produit une image à l'emplacement souhaité, mais l'image n'est pas nommée correctement.Multer ne renomme pas l'image

routes.js

var upload = multer({ 
    dest: './client/shared/assets/images/logos', 
    rename: function (fieldname, filename, req, res) { 
    console.log('Rename YO!') 
    console.log(fieldname) 
    console.log(filename) 
    console.log(req) 
    return 'test' + '-'+Date.now(); 
    } 
}); 

app.post('/uploads/logo',upload.single('file'), function(req, res){ 
console.log('Upload photo yo!') 
    console.log(req.body) // form fields 
    console.log(req.file) // form files 
    res.status(204).end() 
}); 

create.controller.js

$scope.saveLogo = function(file) { 
    console.log(file); 
    file.upload = Upload.upload({ 
    url: '/uploads/logo', 
    method: 'POST', 
    fields: { 
     name: $scope.item.name, 
     subdomain: $scope.item.subdomain 
    } 
    }); 

    file.upload.then(function (_res) { 
    console.log(_res) 
    file.result = _res.data; 
    }, function (_res) { 
    console.log(_res) 
    if (_res.status > 0) 
     $scope.errorMsg = _res.status + ': ' + _res.data; 
    }); 

    file.upload.progress(function (evt) { 
    // Math.min is to fix IE which reports 200% sometimes 
    file.progress = Math.min(100, parseInt(100.0 * evt.loaded/evt.total)); 
    }); 
}; 

Je ne sais pas ce que je suis absent ici. J'essaye de limiter la fonctionnalité de multer à une action post spécifique, pourrait-il être cela?

Merci à l'avance

Répondre

1

Résolu avec cette petite friandise:

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, '/tmp/my-uploads') 
    }, 
    filename: function (req, file, cb) { 
    cb(null, file.fieldname + '-' + Date.now()) 
    } 
}) 

var upload = multer({ storage: storage }) 

L'approche a changé la méthode ci-dessus depuis la dernière version