我试图从Dropbox API下载PDF文件。它的工作原理很好,我得到的字符串,但当我转发的。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);
似乎问题只是因为fileBuffered被下载时是空的。Node 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);
});
});