Télécharger des fichiers avec Multer sans utiliser l’action, la méthode, encrypt = les atsortingbuts “multipart / form-data” sur la balise de formulaire

donc j’essaye de télécharger une image avec Multer mais je veux utiliser $ http.post de Angular pour télécharger le fichier. L’absence de bouton d’envoi déclenche la méthode et l’action du formulaire. Le problème est que si je n’utilise pas d’atsortingbuts encrypt, method ou post, le fichier req.file finit par être indéfini et l’image n’apparaît pas dans le dossier de téléchargement.

Ma question est donc la suivante: est-il possible d’utiliser le fichier Multer pour l’envoi de fichiers non par la méthode de formulaire classique avec action mais par $ http.post () de angular? Quand je le fais maintenant, le req.file est toujours indéfini.

Voici mon code de référence

app.js (Node)

var express = require('express'); var http = require('http'); var path = require('path'); var fs = require('fs'); var crypto = require('crypto'); var multer = require('multer'); var bodyParser = require('body-parser'); var app = express(); var port = process.env.port || 8080; app.set('view engine', 'ejs'); app.use('/assets', express.static(__dirname + '/public')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); var path = require('path'); var multer = require('multer'); var storage = multer.diskStorage({ destination: './public/uploads/', filename: function (req, file, cb) { crypto.pseudoRandomBytes(16, function (err, raw) { if (err) { return cb(err); } cb(null, raw.toSsortingng('hex') + path.extname(file.originalname)); }); } }); var upload = multer({ storage: storage }); app.get('/', function (req, res) { 'use ssortingct'; res.render('index', {filename: filename }); }); app.post('/', function (req, res) { 'use ssortingct'; }); app.post('/upload', upload.single('image'), function (req, res) { filename = req.files; console.log(req.files); }); app.listen(port); 

Formulaire HTML:

 

Donc, je veux fondamentalement supprimer ce comportement par défaut et toujours obtenir l’object req.file.

Et enfin mon code angular:

 $scope.uploadFile = function(){ var file = $scope.myFile; var uploadUrl = "/upload"; var fd = new FormData(); fd.append('file', file); $http.post(uploadUrl,fd, { transformRequest: angular.identity, headers: {'Content-Type': undefined} }) .success(function(){ console.log("success!!"); }) .error(function(){ console.log("error!!"); }); }; 

S’il vous plaît, aidez-moi sur ce point … À l’heure actuelle, je reçois le rappel $ http.post () .error () et, si j’y tiens profondément, c’est parce que req.file n’est pas défini dans mon noeud app.js

Pourquoi utilisez headers: {'Content-Type': undefined} vous les en- headers: {'Content-Type': undefined} Vous devez envoyer le type de contenu pour les images au lieu de non défini. Sinon, supprimez cet en-tête et essayez-le. Aussi en utilisant console.log (req.body), vous pouvez vérifier quel corps vous envoyez