J'ai besoin de votre aide, ceci est très important car cela stoppe la progression de mon application. J'ai tout essayé mais je suis confus. J'essaie de télécharger le fichier en utilisant multer, si j'utilise POSTMAN pour mon code, j'obtiens la réponse 'File uploaded'
c'est que tout semble être ok, mais rien ne se passe, c'est-à-dire req.file is undefined
et je ne sais pas comment le changer. S'il vous plaît regarder sur mon codeTélécharger le fichier en utilisant le multer dans l'application MEAN
serveur
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var morgan = require('morgan');
var path = require('path');
var multer = require('multer');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var router = express.Router();
var appRoutes = require('./app/routes/api')(router,multer,path);
var passport = require('passport');
var social = require('./app/passport/passport')(app,passport);
var product = require('./app/seed/product-seeder');
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(__dirname + '/public'));
app.use('/api', appRoutes);
mongoose.connect('mongodb://localhost:27017/tutorial', function(err){
if(err){
console.log('MongoDB not connected' + err)
} else {
console.log('Scuccessfully connected to MongoDB database');
}
})
app.get('*', function(req, res){
res.sendFile(path.join(__dirname + '/public/app/views/index.html'))
})
app.listen(port, function(){
console.log('Running the server on port ' + port)
});
api
module.exports = function(router,multer,path) {
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './uploads')
},
filename: function(req, file, callback){
callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})
router.post('/courses/files', function(req, res) {
var upload = multer({ storage: storage }).single('file')
upload(req, res, function(err) {
res.end('File is uploaded')
console.log(req.file)
})
})
return router
}
services
userFactory.storeFile = function(file){
return $http.post('/api/courses/files', file)
}
html
<div class="container management-user">
<form enctype="multipart/form-data" name="sendFile" ng-submit="product.sendFile(file)" novalidate>
<input type="file" name="file" id="imgInp">
<input type="submit" value="submit">
</form>
</div>
contrôleur
app.sendFile = function(file, valid) {
User.storeFile(app.file).then(function(data){
console.log(data)
});
}
Notez que si vous essayez de console.log (formData) dans angulaire il sera toujours non défini comme propriété de ne pas afficher quelque chose. –
oui, j'ai résolu ce problème de la même façon, mais c'est une excellente réponse! Je pense que beaucoup de gens bénéficient de cette réponse, merci beaucoup –