Express генерация и возврат QR-кода по запросу GET - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь сгенерировать QR-код по запросу express. Он берет значение из параметра URL и возвращает QR-код, используя файловый поток в виде необработанного изображения.

const express = require('express');
const router = express.Router();
const QRCode = require('qrcode');

router.get('/qr/:content', function(req, res, next){
let content = req.params.content

// Filestream goes here

})

Вот как я пытался это сделать, однако я никогда не работал с файловыми потоками, и я не могу заставить его работать:

let code = QRCode.toFileStream(new stream.Writable, conent)
code.pipe(res);

Это библиотека, которую я использую: https://www.npmjs.com/package/qrcode

1 Ответ

0 голосов
/ 06 февраля 2020

Попробуйте этот код:

import QRCode from 'qrcode';
import { PassThrough } from 'stream';


router.get('/qr/:content', async (req, res, next) => {
    try{
        const content = req.params.content;            
        const qrStream = new PassThrough();
        const result = await QRCode.toFileStream(qrStream, content,
                    {
                        type: 'png',
                        width: 200,
                        errorCorrectionLevel: 'H'
                    }
                );

        qrStream.pipe(res);
    } catch(err){
        console.error('Failed to return content', err);
    }
}
...