使用node.js在mongodb中存储文件

时间:2012-12-24 06:25:03

标签: node.js mongodb gridfs

嗨我需要使用node.js在mongodb中存储一个文件,该文件放在我的桌面上我必须将它存储在我的mongodb数据库中。我遇到了一些名为gridfs的东西,但我不确定如何继续进行。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

如果您的文件大小超过16Mb(Mongo的最大文档大小),如果您希望将文件存储在数据库中,则必须使用gridFS。

在这里使用gridFS的原因非常有用: http://docs.mongodb.org/manual/faq/developers/#faq-developers-when-to-use-gridfs

在节点中的实现方面(如果使用nativ mongo驱动程序):

var  mongodb = require('mongodb')
   , MongoClient = mongodb.MongoClient
   , Grid = mongodb.Grid //use Grid via the native mongodb driver
   ;

设置连接后,将文件写入gridFs

var grid = new Grid(db, 'fs'); //db being a handle to your database

var buffer = //read the file in to a buffer

//write the buffer out to mongo
grid.put(buffer, {metadata:{category:'text'}, content_type: 'text'}, function(err, fileInfo) {
 if(err) {
   //handle any errors here
 }
});

答案 1 :(得分:1)

虽然我不建议在Mongo中存储大文件,但尽管可能,但较小的文件会更好。

只需读取文件的文本(如果是文本文件)或二进制文件(如果它是二进制格式,即可执行文件)。您可以使用fs库来读取文件并对其进行相应编码。

然后将存储在变量中的数据插入数据库中。

var fs = require('fs');

// Read file with proper encoding...
var data = //...

// Insert into Mongo
mongo.insert({file: data});

如果要从数据库中检索文件,则执行相反的操作。编码/解码过程因文件类型而异。