Changing a buffer from a ReadStream into an actual file

大兔子大兔子 提交于 2019-11-27 05:33:30

Ok this saved my life: https://youtu.be/pXHOF4GWuZQ. This is the final code:

downloadFile(file_id) {
    return new Promise((resolve, reject) => {
        var mongoose = require('mongoose');
        var Grid = require('gridfs-stream');
        var fs = require('fs');

        mongoose.connect(config.db, {useNewUrlParser: true},).catch(e => console.log(e));
        var conn = mongoose.connection;
        Grid.mongo = mongoose.mongo;
        var gfs = Grid(conn.db);
        console.log('downloadfile', file_id);
        var read_stream = gfs.createReadStream({_id: file_id});
        let file = [];
        read_stream.on('data', function (chunk) {
            file.push(chunk);
        });
        read_stream.on('error', e => {
            console.log(e);
            reject(e);
        });
        return read_stream.on('end', function () {
            file = Buffer.concat(file);
            const img = `data:image/png;base64,${Buffer(file).toString('base64')}`;
            resolve(img);
        });
    });
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!