フレームワーク: node.js/express.js/busboy/gridfs-stream(mongodb)
busboy を使用してファイルをアップロードしてから、gridfs-stream を使用してファイルを mongodb gridfs に保存しています。
                req.pipe(req.busboy);
                req.busboy.on('file', function (bus_fieldname, bus_file, bus_filename) {
                var writestream = gfs.createWriteStream({
                    filename: bus_filename,
                });
                bus_file.pipe(writestream);
                writestream.on('close', function (file) {
                    res.redirect('/xxxxx/');
                });
            });
ダウンロードは簡単です。gridfs-stream の createReadStream を使用します。mongodb からコンテンツを読み取り、次のコードを使用してブラウザーに送信します。
            gfs.findOne({_id: attachmentid}, function (err, file) {
            if (err || !file){
                res.send(404);
            }else{
                var fileName = file.filename;
                var readstream = gfs.createReadStream({_id: attachmentid});
                var buffer = "";
                readstream.on("data", function (chunk) {
                    buffer += chunk;
                });
                // dump contents to buffer
                readstream.on("end", function () {
                    res.set("Content-Disposition","attachment; filename=" + fileName);
                    res.send(buffer);
                });
            }
問題: 90kb の pdf ファイルをアップロードすると、正常にアップロードされます。サイズはmongodbで正しいことがわかります。しかし、ダウンロードすると、ダウンロードしたファイルのファイルサイズは約165kbです。不一致があります。これは、テキスト ファイルでは発生しません。確かにデータ型と関係があります。
誰でも助けてもらえますか?