0

「Multer」と「multer-gridfs-storage」を使用して複数の画像ファイルを MongoDB にアップロードしました。これらのファイルを抽出して、Web ページにサムネイルとして表示したいと考えています。これらのファイルを ReadStream に抽出して、ループできる配列に格納しようとしました。

var streams = [];
    console.log(result)
    for (var i = 0; i < result.length; i++) {

        var gfs = Grid(conn.db);
        var campground = gfs.createReadStream({
            _id: result[i]._id
        });
        streams[i] = campground;
        console.log("   " + i);
    }

これらを表示できるフロントエンドに渡したいのですが、表示されません。次のコードをループで実行してみました。

    var rest
    streams[0].pipe(rest)
    res.writeHead(200, { 'Content-Type': 'image/jpeg' });
    res.write(rest);
    //      res.addTrailers({ 'image/jpeg': rest });
    res.end();

動かない。以下は機能しますが、1つのファイルしか表示しません

 streams[i].pipe(res)

画像の配列を ejs ファイルに渡したいです。ストリーム[i] 配列はグリッド オブジェクトであり、最終的な画像ではありません。どうすればこれを達成できますか?

よろしく、 ガウラフ

4

2 に答える 2

2

いくつかの検索の後に答えを得た

    const bufs = [];
    readstream.on('data', function(chunk) {
        bufs.push(chunk);
    });
    readstream.on('end', function() {
        const fbuf = Buffer.concat(bufs);
        res.setHeader('Content-Type', 'image/jpeg');
        res.writeHead(res.statusCode);
        res.write(fbuf);
        /res.end();

    });
于 2017-12-07T09:51:47.660 に答える