我是node和mongoDB的新手。我正在使用nodeJS,express和mongoDB开发应用程序。我想从文件输入字段中读取一个csv / xlsx文件,并使用mongoose将其存储在mongoDB中。我有困难。我在前端使用angularjs。谁能给我建议我应该经过什么程序?特定代码将有很大帮助。
我使用busboy模块将文件存储在特定的文件夹中。这是我的代码
在航线上:
router.post('/fileupload', function (req, res) {
var fstream;
req.pipe(req.busboy);
console.log(req.pipe);
console.log(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
console.log("Uploading: " + filename);
fstream = fs.createWriteStream('./files/' + filename);
file.pipe(fstream);
fstream.on('close', function () {
res.redirect('back');
});
});
});
和我的前端:
<form method="post" action="/fileupload" enctype="multipart/form-data">
<input type="file" id="file" name="file">
<button type="submit">Submit</button>
</form>
到目前为止,没有错误。现在我只想将这些文件存储在数据库中。接下来我该怎么办?
您可能需要了解在mongo中存储文件的基础。为什么文件存储在mongo中以及如何存储?
完成之后,您现在需要一个mongoose插件,该插件会将您上传的文件存储到mongo GridFS中。该GridFS的是在这里: - http://docs.mongodb.org/manual/core/gridfs/。您可以使用任何兼容的驱动程序来访问网格-mongoose和mongoose插件gridfs-stream是一个示例-参见此处:https ://www.npmjs.org/package/gridfs-stream
我在下面使用过将文件保存到gridfs中。
var express = require('express');
var formidable = require('formidable');
var mongoose = require('mongoose');
var grid = require('gridfs-stream');
var fs = require('fs');
var util = require('util');
var app = express();
app.post('/fileupload', function (req, res) {
var form = new formidable.IncomingForm();
form.uploadDir = __dirname + "/data";
form.keepExtensions = true;
form.parse(req, function(err, fields, files) {
if (!err) {
console.log('File uploaded : ' + files.file.path);
grid.mongo = mongoose.mongo;
var conn = mongoose.createConnection('..mongo connection string..');
conn.once('open', function () {
var gfs = grid(conn.db);
var writestream = gfs.createWriteStream({
filename: files.file.name
});
fs.createReadStream(files.file.path).pipe(writestream);
});
}
});
form.on('end', function() {
res.send('Completed ..... go and check fs.files & fs.chunks in mongodb');
});
});
app.get('/', function(request, response){
response.send(
'<form method="post" action="/fileupload" enctype="multipart/form-data">'
+ '<input type="file" id="file" name="file">'
+ '<input type="submit" value="submit">'
+ '</form>'
);
});
app.listen(40000, function() {
console.log('Express is listening on port 40000');
});
上面是有关上传文件后应如何进行操作的指南,它不是生产就绪的概念证明。请注意,根据个人喜好,我将busboy替换为强大。
它有助于您继续前进吗?
SO1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句