我在运行时使用pdfkit生成pdf,并在http响应中返回以供下载。我可以在浏览器端下载文件,但下载对话框不会立即打开。而是等待调用doc.end。我想pdfkit无法有效地推送流。有其他人面对过这种情况吗?如果是,请引导。
这是我正在尝试的示例代码
exports.testPdfKit = functions.https.onRequest((request, response) => {
//create pdf document
doc.pipe(response);
response.set('Content-Disposition', `attachment;filename=testpdfstream.pdf`);
response.writeHead(200, { 'Content-Type': 'application/pdf' })
const bigText = "some big text"
for (var i = 0; i < 1000; i++) {
console.log('inside iteration -',i)
doc.text(bigText);
doc.addPage();
}
doc.end()
});
我在firebase函数上实现了这个功能,该函数在内部使用expressjs来处理http请求。要在我的端生成更大的文件,流媒体对我来说是必须的。
HTTP函数不能流式传输函数的输入或输出。整个请求在一个内存块中传递,响应在一个块中收集并发送回客户端。两者的最大大小均为10MB。云功能的这种限制没有解决办法(但它确实可以帮助您更好地扩展系统(。
如果你需要流媒体或websocket,你需要使用不同的产品,比如应用程序引擎或计算引擎。