Загрузить файл из потока преобразования Dropbox с возможностью записи / чтения - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь загрузить PDF-файл из Dropbox API. Он работает нормально, и я получаю строку, но когда я пересылаю fileBuffered клиенту, я получаю пустой файл. В чем может быть проблема?

let fileBuffered = '';

let dropboxPromise = new Promise(function (resolve, reject) {
            dropbox(params, function (err, result) {
                if (err) {
                    reject(err);
                } else {
                    resolve(result);
                }
            }).on('data',function(data) {
                fileBuffered += data;
            });
        });
const file = `data:application/pdf;base64, ${Buffer.from(fileBuffered).toString("base64")}`;
    res.setHeader("Content-Type", "application/pdf");
    res.setHeader("Accept-Encoding", "base64");
    res.send(file);

1 Ответ

0 голосов
/ 25 мая 2020

Похоже, проблема просто в том, что fileBuffered пуст к моменту загрузки. Узел / Javascript синхронный. Вам нужно поставить что-то вроде этого, чтобы исправить проблему.

    let fileBuffered = '';

    let dropboxPromise = new Promise(function (resolve, reject) {
                dropbox(params, function (err, result) {
                    if (err) {
                        reject(err);
                    } else {
                        resolve(result);
                    }
                }).on('data',function(data) {
                    fileBuffered += data;
                }).once('end', () => {
                    const file = `data:application/pdf;base64, ${Buffer.from(fileBuffered).toString("base64")}`;
                    res.setHeader("Content-Type", "application/pdf");
                    res.setHeader("Accept-Encoding", "base64");
                    res.send(file);

              });
    });
...