如何通过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
相关产品推荐
相关产品推荐

