服务器端文件上传百分比共享 nodejs

时间:2021-07-25 19:59:11

标签: node.js express

想象一个在线服务,让两个浏览器用户在他们之间共享文件,使用会话密钥字符串与作为中间人的 HTTP 拉取服务器进行通信,而不是 websocket。

为了获得更好的用户体验,最好向文件接收者用户显示当前上传的文件以及他们从上传者那里取得的进展。

那么我是怎么想到这样做的,我在哪里遇到了问题?

首先,当文件要上传时 - 客户端将向服务器发送文件元数据,如大小、名称等

但是,我将如何在文件接收器端创建上传进度条?我需要一个 websocket 连接并在上传者端发送进度,但这并不理想,不是吗?

我想问一下是否有可能在 Express.js 中,在文件上传的路由内捕获一个侦听器,每次上传一大块数据时触发一个事件,这样我就可以更新数据库存储两端(接收者、上传者)在执行 HTTP Pull 以更新状态时需要获取的信息。

1 个答案:

答案 0 :(得分:0)

首先,您需要捕获传入的请求进度。您可以使用 formidable 和 express 来监听 progress 事件。请参见示例 here

您可以将文件的进度存储在数据库中,以便接收者看到当前正在上传的文件。

注意 1:这是一个巨大的开销,每次上传有多个数据库写入。内存缓存更适合单实例服务器或数据库。

注意 2:通过拉取,接收者只能看到文件的加载进度。这可以通过定期拉动来解决,比如 1s 间隔,这似乎“足够活”,但这会带来更多的开销。建议使用 Websocket 进行实时进度更新。