Получить всю информацию о форме одновременно с помощью busboy в nodeJS - PullRequest
0 голосов
/ 02 октября 2019

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

Затем я пытаюсь сохранить этот документвместе с описанием в моей любимой базе данных noSQL.

Для этого мне нужно иметь описание и строку base64, представляющие файл, существующий одновременно, чтобы я мог отправить их обоих в базу данных noSQL. .

Я не уверен, как поступить с busboy, так как он основан на всех событиях и данные передаются в потоковом режиме.

здесь моя HTML-форма

<form id="form-documents"
  action="/documents/save_document"
  method="post"
  encType="multipart/form-data">
    <input type="file" id="btn-documents-form-file-browse" name="document" /><br>
    Description :
    <input type="text" id="document_description" /><br>
    <input type="submit" value="Upload !" id="btn-documents-form-submit-button" /><br>
</form>

и мой nodeJS expressкод:

router.post('/save_document', (req, res, next) => {

    let busboy = new Busboy({headers:req.headers});

    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
        console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);
        a = file.toString("base64")
        file.on('data', function(data) {
            console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
        });
        file.on('end', function() {
            console.log('File [' + fieldname + '] Finished');
        });
    });
    busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) {
        console.log('Field [' + fieldname + ']: value: ' + inspect(val));
    });
    busboy.on('finish', function() {
        console.log('Done parsing form!');
        res.writeHead(303, { Connection: 'close', Location: '/' });
        res.end();
    });
req.pipe(busboy);

});

Как получить полные данные из файла вместе с полем описания в разделе finish синтаксического анализа busboy?

...