Situation
J'ai implémenté le téléchargement de fichiers. Le code frontal est tiré du populaire tutoriel . J'envoie POST en service :
myApp.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(){
})
.error(function(){
});
}
}]);
Utilisation typique de multer dans le back-end :
exports.postFile = function (req, res) {
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, '../documents/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
var upload = multer({ //multer settings
storage: storage
}).single('file');
upload(req, res, function (err) {
if (err) {
res.json({error_code: 1, err_desc: err});
return;
}
res.json({error_code: 0, err_desc: null});
})
};
Ça marche.
Question
Comment envoyer des données dans le même POST, disons une chaîne de caractères. "additional info"
?
Ce que j'ai essayé
J'ai essayé d'ajouter des données dans le service, c'est-à-dire :
...
var fd = new FormData();
fd.append('file', file);
fd.append('model', 'additional info');
$http.post(uploadUrl, fd, {...})
Il semble être envoyé, mais je ne sais pas comment le recevoir en back-end. J'ai essayé de le trouver dans req
(sans succès).