You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Socket.IO将客户端文件上传至MongoDB GridFS(Mongoose)

上传Socket.IO客户端Buffer文件至MongoDB GridFS的实现方法

你当前代码是读取本地文件流上传,要处理客户端传来的data.file(Buffer格式),无需依赖本地文件,直接将Buffer转为可读流后传入GridFS即可,具体修改如下:

修改后的代码

socket.on('/upload',(data)=>{
    // 引入stream模块的Readable类
    const { Readable } = require('stream');
    // 将Buffer转换为可读流
    const fileStream = Readable.from(data.file);

    // 把可读流pipe到GridFS的上传流
    fileStream.pipe(bucket.openUploadStream('myFile', {
        chunkSizeBytes: 1048576,
        metadata: { field: 'myField', value: 'myValue' }
    }))
    .on('finish', () => {
        console.log('文件上传完成');
    })
    .on('error', (err) => {
        console.error('上传失败:', err);
    });
})

核心说明

  • Socket.IO已自动将客户端文件转为Buffer格式,直接用stream.Readable.from()方法就能把Buffer转换成GridFS需要的可读流。
  • 新增finish和error事件监听,能及时处理上传完成或异常的情况,便于后续业务逻辑扩展。

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:27:37