如何解决NodeJS:查看并从数组缓冲区下载PDF 我的问题:我正在寻找什么:
我的问题:
我已经有一个解决方案,可以像这样从数组缓冲区查看pdf文件:
const data = getArrayBufferFromAPI() // <Buffer 25 50 44 46 2d 31 2e
res.setHeader('Content-Type','application/pdf')
return res.end(data)
这会按预期但在浏览器中打开PDF,但是当我单击浏览器的PDF视图上的“下载图标”时,它抛出了“ 失败-网络错误”。
我已经有了直接下载文件的代码(无需在浏览器中查看):
res.setHeader('Content-Type','application/pdf')
res.setHeader('Content-Length',data.length)
res.setHeader('Content-Disposition','attachment; filename=name.Pdf')
return res.end(data)
这不是我想要的。
我正在寻找什么:
我可以在浏览器中打开或单独下载而没有任何问题。我需要两个一起工作。在浏览器中打开数组缓冲区,然后单击浏览器视图上的下载图标 ,应该下载pdf内容。
我使用nunjucks作为视图模板引擎,并且不使用任何客户端javascript。
解决方法
基本上,您需要指定content-length。下载时,浏览器会比较内容长度和实际接收到的数据量,如果不匹配,则会像格式错误的请求一样处理
res.setHeader('Content-Type','application/pdf')
res.setHeader('Content-Disposition','attachment; filename=name.Pdf')
res.setHeader('Content-Length',data.length)
return res.end(data)
修改
它是HTTP2规范的一部分,请看here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。