【发布时间】:2018-08-14 20:47:42
【问题描述】:
我的系统上有一个保存的 .PDF 文件,我正在尝试使用 node/express 将该文件发送到前端。
我将文件作为流(二进制字符串)发送到前端,但是当在前端运行一些代码以将 .PDF 下载到用户计算机上时,.PDF 文件显示为空白。
这是我在服务器上的路线:
app.post('/someroute', (req, res) => {
let pdfPath = './somepath/where/the/pdf/is'
// if the file does not exist
if (!fs.existsSync(pdfPath)) {
console.log(`The PDF does NOT exist @ ${pdfPath}`)
return res.json({ success: false });
}
res.download(pdfPath, (err) => {
if (err) {
console.log('there was error in res.downoad!', err)
} else {
fs.unlink(pdfPath, (err) => {
if (err) {
console.log('there was error in unlinking the pdf file!', err)
} else {
console.log('success!')
}
})
}
})
})
这是前端的代码:
$.post("/someroute", function(data) {
console.log('creating PDF...', data)
var downloadLink = document.createElement('a')
downloadLink.target = '_blank'
downloadLink.download = 'new_pdf_haha.pdf'
var blob = new Blob([data], { type: 'application/pdf' })
var URL = window.URL || window.webkitURL
var downloadUrl = URL.createObjectURL(blob)
// set object URL as the anchor's href
downloadLink.href = downloadUrl
// append the anchor to document body
document.body.append(downloadLink)
// fire a click event on the anchor
downloadLink.click()
// cleanup: remove element and revoke object URL
document.body.removeChild(downloadLink)
URL.revokeObjectURL(downloadUrl)
})
这是我在前端收到的流: stream on the frontend
这是我希望在前端下载的 PDF:
以下是实际下载的内容:
如果有人可以提供任何见解或帮助,将不胜感激,谢谢!
【问题讨论】:
标签: javascript node.js express pdf