使用 gridfs 将上传的文件及其元数据存储在 Node / Express 中
Using gridfs to store uploaded file with its metadata in Node / Express
我知道有一些关于此的话题,但我找不到确切的答案。所以使用 post 我已经设法将这个文件对象发送到服务器端
{ fileToUpload:
{ name: 'resume.pdf',
data: <Buffer 25 50 44 46 2d 31 2e 33 0a 25 c4 e5 f2 e5 eb a7 f3 a0 d0 c4 c6 0a 34 20 30 20 6f 62 6a 0a 3c 3c 20 2f 4c 65 6e 67 74 68 20 35 20 30 20 52 20 2f 46 69 ... >,
encoding: '7bit',
mimetype: 'application/pdf',
mv: [Function] } }
如何使用 mongoose 和 gridfs 将其与元数据一起保存?到目前为止,在我看过的大多数线程中,使用 gridfs-stream 给定文件的临时路径,但我没有。有人可以通过流式传输数据及其元数据来帮助我保存此文件 + 举例说明如何检索它并将其发送回客户端吗?
我一定是累了,我一直在使用 express-fileupload 作为中间件,但没有使用它来保存通过对象中的 mv 函数完成的文件。使用下面的代码在本地保存文件,然后使用 gridfs-stream
将其流式传输到 mongo
var file = req.files.fileToUpload;
file.mv('./uploads/'+file.name, function(err) {
if (err) {
res.send(err, 500);
}
else {
res.send('File uploaded!');
var gfs = Grid(conn.db);
// streaming to gridfs
//filename to store in mongodb
var writestream = gfs.createWriteStream({
filename: file.name
});
fs.createReadStream('./uploads/'+file.name).pipe(writestream);
writestream.on('close', function (file) {
// do something with `file`
console.log(file.filename + ' Written To DB');
});
}
});
我知道有一些关于此的话题,但我找不到确切的答案。所以使用 post 我已经设法将这个文件对象发送到服务器端
{ fileToUpload:
{ name: 'resume.pdf',
data: <Buffer 25 50 44 46 2d 31 2e 33 0a 25 c4 e5 f2 e5 eb a7 f3 a0 d0 c4 c6 0a 34 20 30 20 6f 62 6a 0a 3c 3c 20 2f 4c 65 6e 67 74 68 20 35 20 30 20 52 20 2f 46 69 ... >,
encoding: '7bit',
mimetype: 'application/pdf',
mv: [Function] } }
如何使用 mongoose 和 gridfs 将其与元数据一起保存?到目前为止,在我看过的大多数线程中,使用 gridfs-stream 给定文件的临时路径,但我没有。有人可以通过流式传输数据及其元数据来帮助我保存此文件 + 举例说明如何检索它并将其发送回客户端吗?
我一定是累了,我一直在使用 express-fileupload 作为中间件,但没有使用它来保存通过对象中的 mv 函数完成的文件。使用下面的代码在本地保存文件,然后使用 gridfs-stream
将其流式传输到 mongovar file = req.files.fileToUpload;
file.mv('./uploads/'+file.name, function(err) {
if (err) {
res.send(err, 500);
}
else {
res.send('File uploaded!');
var gfs = Grid(conn.db);
// streaming to gridfs
//filename to store in mongodb
var writestream = gfs.createWriteStream({
filename: file.name
});
fs.createReadStream('./uploads/'+file.name).pipe(writestream);
writestream.on('close', function (file) {
// do something with `file`
console.log(file.filename + ' Written To DB');
});
}
});