在当前的配置中,我们在AWS中实现了一个功能,其中为特定目标组启用了粘性,特别是用于下载结果。但是,禁用此功能会中断功能。后端工作流涉及向第三方服务发出请求以获取PDF文件,这些文件随后存储在EC2示例的本地磁盘上。然后,服务器将这些PDF文件提供给请求用户。当用户连接到不同的EC2示例时,会出现一个固有的挑战,因为PDF文件被限制在最初存储它们的示例中,使得连接到替代示例的用户无法访问它们。
为了解决这个问题并确保PDF文件在多个EC2示例之间的无缝访问,需要一个涉及集中存储和分发的解决方案。
下面是当前的实现`const pdfData = await someThirdParty(id)
if (!pdfData.data.data.success) { throw new Error(pdfData.data.data.message) }
fs.writeFileSync(
filePath,
pdfData.data.data.report.replace(/^data:application\/pdf;base64,/, ''),
'base64',
(err) => {
throw new Error(err)
}
) `
目前我将此PDF存储在nodecache中
一个解决方案,我可以想到的存储文件在s3桶,但我不想存储在那里,由于明显的原因。我想要的是,我直接为用户提供PDF文件,而不存储在本地服务器上
按需生成PDF:当用户请求下载时,从第三方服务获取或生成PDF。
直接流式传输PDF:将PDF内容直接流式传输到用户的浏览器,而无需将其保存在服务器上。
将PDF发送给用户:将流式传输的PDF数据作为HTTP响应发送给用户进行下载。
这确保了PDF在不本地存储的情况下提供给用户,从而维护了一个无服务器且高效的系统。
1条答案
按热度按时间mfpqipee1#
我想你要找的是PIPE
你会这样使用它:
这样即使文件非常重,它也会在从第三方存储下载时发送