gpt4 book ai didi

node.js - 如何使用 Formidable 将文件上传直接流式传输到 Mongo 的 GridFS?

转载 作者:可可西里 更新时间:2023-11-01 09:13:18 32 4
gpt4 key购买 nike

我正在尝试将来自 Formidable 的上传内容直接流式传输到 Mongo 的 GridFS。

在写入任何数据之前需要打开 GridStore,但是在打开存储所需的时间内,太多数据已经未解析,因此失败。

我如何准备 GridStore 然后处理传入的上传?

function upload (request, response, next, options) {
var form = new Formidable.IncomingForm();

var store = new Mongo.GridStore(options.mongoose.connection.db, new ObjectID, 'w+', {
root: 'store',
chunk_size: 1024 * 64
} );

form.onPart = function (part) {
if(!part.filename){
form.handlePart(part);
return;
}

part.on('data', function(buffer){
store.write(buffer);
});

part.on('end', function() {
store.close();
});
};

store.open( function (error, store) {
form.parse(request);
});

response.send();
}

最佳答案

由于打开 GridStore 文件是异步的,而 formidable 不是,因此在等待 GridStore 文件打开时,您需要对强大的传入流进行一些手动缓冲。由于无法通过管道传输 GridFS,因此您需要在打开后手动将每个缓冲 block 写入 GridStore。

刚刚发布的 gridform 应该可以满足您的需要。

https://github.com/aheckmann/gridform

关于node.js - 如何使用 Formidable 将文件上传直接流式传输到 Mongo 的 GridFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469350/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com