大家晚上好
我手动将.pdf文件上传到我的mariaDB。我想让我的客户直接下载它。这是我的操作方法:
1)通过phpMyAdmin(带有utf-8bin编码的数据库)以longblob类型上传文件。
2)通过AJAX GET调用从数据库获取blob。
3)像这样处理获得的斑点:
handleResponse(evt) {
if (evt.detail.url.includes('/getPDF/')) {
this.save("cahier_de_bord.pdf", evt.detail.response[0].file);
console.log( evt.detail.response[0].file);
}
}
save(filename, data) {
var blob = new Blob([data], {
type: 'application/pdf'
});
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, filename);
} else {
var elem = window.document.createElement('a');
elem.href = window.URL.createObjectURL(blob);
elem.download = filename;
document.body.appendChild(elem);
elem.click();
document.body.removeChild(elem);
}
}
它实际上下载了文件,但无法读取它:在Firefox中出现“无法加载PDF”错误。
顺便说一下,这是如何从我的nodejs服务器发送它的:
app.get('/getPDF/:id', function (req, res) {
maria.getPDF(req.params.id, function (err, data) {
if (err) {
res.status(400).send(err).end();
} else {
// console.log(data[0].file);
res.status(200).send(data).end();
}
});
});
//And here is the query
exports.getPDF = function (id, callback) {
var c = init(process.env.B_PDF);
var query = 'SELECT file FROM pdf WHERE id_Mission = ' + id + ';';
c.query(query, function (err, res) {
if (err) {
c.end();
callback(err, null);
} else {
c.end();
callback(null, res);
}
});
}
当我从phpMyAdmin手动下载它时,它以“ pdf-file.bin”下载,当强制将其扩展为.pdf并打开文件时,它运行良好。我在这里做错什么了吗?
谢谢大家,
NeitoFR