Tôi không hài lòng với câu trả lời được xếp hạng cao nhất ở đây và vì vậy tôi đang cung cấp một câu trả lời mới:Tôi đã kết thúc bằng cách sử dụng mô-đun nút 'gridfs-stream' (tài liệu tuyệt vời ở đó!) Có thể được cài đặt qua npm. Với nó, và trong kết hợp với mongoose, nó có thể trông như thế này:
var fs = require('fs');
var mongoose = require("mongoose");
var Grid = require('gridfs-stream');
var GridFS = Grid(mongoose.connection.db, mongoose.mongo);
function putFile(path, name, callback) {
var writestream = GridFS.createWriteStream({
filename: name
});
writestream.on('close', function (file) {
callback(null, file);
});
fs.createReadStream(path).pipe(writestream);
}
Lưu ý rằng đường dẫn là đường dẫn của tệp trên hệ thống cục bộ.
Đối với chức năng đọc tệp của tôi, đối với trường hợp của tôi, tôi chỉ cần truyền tệp vào trình duyệt (sử dụng express):
try {
var readstream = GridFS.createReadStream({_id: id});
readstream.pipe(res);
} catch (err) {
log.error(err);
return next(errors.create(404, "File not found."));
}