作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
服务器端
我尝试从 NodeJs
发送文件
/**
* Exports data to PDF format route.
*/
app.post('/export/pdf', upload.single('imageBlob'), function (request, response) {
var PDF = require('./services/PdfService').PDF;
var fileUrl = PDF.generatePDFExport(request.body, request.file.buffer);
setTimeout(() => {
response.sendFile(fileUrl);
}, 200);
});
这段代码创建了一个有效的 pdf 文件(我可以打开它浏览器 URL 命中文件)
但是有些浏览器隐藏了弹出窗口,我想下载一个文件而不是打开它。
我检查客户端中的响应,它是一些看起来像 BLOB
的响应。
客户端
我尝试根据响应创建一个文件,但只有一个空的 pdf 文件。
return axios.post('http://172.18.0.2:8001/export/pdf', formData).then(response => {
let blob = new Blob([response.data]);
FileSaver.saveAs(blob, "st-seatmap-shop.pdf");
})
这里有什么错误?在服务器端发送文件还是在客户端保存文件?
最佳答案
唯一的问题是向服务器发送请求。
服务器默认返回流,为了在客户端上保存文件,响应需要是 BLOB
,所以我刚刚更新了请求。
let requestOptions = {
responseType: 'blob'
};
return axios.post('http://172.18.0.2:8001/export/pdf', formData, requestOptions).then(response => {
let blob = new Blob([response.data]);
FileSaver.saveAs(blob, "st-seatmap-shop.pdf");
}).catch(error => {
console.log("error.response is : ", error);
});
关于javascript - NodeJS sendFile 从服务器返回空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51785968/
我是一名优秀的程序员,十分优秀!