3

嗨,我需要使用 node.js 在 mongodb 中存储一个文件,该文件放在我的桌面中,我必须将它存储在我的 mongodb 数据库中。我遇到了一个叫做 gridfs 的东西,但不知道如何继续。任何帮助都会不胜感激

4

2 回答 2

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
 }
});
于 2012-12-24T13:05:09.203 回答
2

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

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

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

var fs = require('fs');

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

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

当你想从数据库中检索文件时,你会做相反的事情。编码/解码的过程因文件类型而异。

于 2012-12-24T06:31:23.573 回答