将multer文件(nodejs)上传到Mongo数据库

我跟着一个关于如何使用multer在节点js中上传文件的教程,并且只是开始学习节点js,并在不久之前expressionjs,所以我是一个相当初学者。 作为教程的结果,当我点击提交在我的index.ejs上传图像/音乐文件,我可以看到在我的terminal文件已上传的细节,当我检查我的./public/uploads文件夹中,一个文件已经放在那里。

我现在想知道的是,如何获取这些数据并将其放入我的mongo数据库中,如何查看这些图像或在我的index.ejs中播放这些音乐文件? 我还没有设立mongoose,但我会成为。 我的代码到目前为止:

我的app.js

var express = require('express'); //to require express.js var multer = require('multer'), //to require multer for uploading photos bodyParser = require('body-parser'), //to require body-parser to grab json form data path = require('path'); var upload = multer({ dest: 'public/uploads/' }) //giving upload a destination directory var app = express(); //to use express app.use(bodyParser.json()); app.set('views', path.join(__dirname, 'views')); app.use(express.static(__dirname + '/public')); //to use style.css app.set('view engine', 'ejs'); //to use ejs as template language // app.use(bodyParser.urlencoded({ extended: false })); //to use body parser app.get('/', function(req, res){ //using express for routing and printing out content res.render('index'); //render it in html. In ejs, display what we want to display }) app.post('/', multer({ dest: './public/uploads/'}).single('upl'), function(req,res){ console.log(req.body); //form fields console.log(req.file); //form files res.status(204).end(); }); app.listen(3000,function(){ //using express to load the server console.log('Pulse on port 3000!'); }) 

Index.ejs

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Pulse</title> </head> <body> <h1> Hi </h1> <form action="/" enctype="multipart/form-data" method="post"> <input type="text" name="title"> <input type="file" name="upload"> <input type="submit" value="Upload"> </form> </body> </html> 

你正在做的是利用文件系统的存储机制。 Multer给你一个选项来select目的地将保存你的文件,你可以提取文件的名称(操作选项也存在)现在文件存储后将文件的URL传递到您的特定function,并从那里保存它的位置在你的mongo分贝。

检索图像的url,并做必要的。

代码示例

 app.post('/yourlink', fileuploadfunc.single('filename'), function1, routename.functionname); 

function1 – 在上传完成后调用routename – 在执行function1之后调用

如果你没有使用路线,那么在函数1中,你可以做任何你想要的。

 var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './uploads/'); }, filename: function (req, file, cb) { var originalname = file.originalname; var extension = originalname.split("."); filename = Date.now() + '.' + extension[extension.length-1]; cb(null, filename); } }); router.post('/', multer({storage: storage, dest: './uploads/'}).single('uploads'), function(req,res){ var music = new Music ({ fieldname: req.file.fieldname, originalname: req.file.originalname, encoding: req.file.encoding, mimetype: req.file.mimetype, destination:req.file.destination, filename: req.file.filename, path: req.file.path, size: req.file.size }) music.save(function(err){ if (err){console.log(err)} else { res.redirect('/'); } }) }); 

模型

 var mongoose = require('mongoose'); var musicSchema = new mongoose.Schema({ fieldname: String, originalname: String, encoding: String, mimeptype: String, destination: String, filename: String, path: String, size: Number, created_at: Date, updated_at: Date }); var Music = mongoose.model('Music', musicSchema); module.exports = Music; 

基于死亡笔记说,这对我工作。