Я не уверен, почему вы не просто создаете адрес, который вы собираетесь передать axios напрямую, но я думаю, что axios может возвращать ваш PDF в неправильном формате, что приводит к неправильному поведению Blob()
.
Я не знаю, как заставить axios превращать вещи в Buffer
s, но я знаю, как сделать это с помощью fetch. Учтите следующее:
async function loadPDF(fileName) {
const res = await fetch(`/api/pdf?file=${fileName}`);
const buff = await res.blob();
const url = window.URL.createObjectURL(buff);
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", "file.pdf");
document.body.appendChild(link);
link.click();
}
Используя axios, это работало с PDF, который я пробовал:
async function loadPDF(fileName) {
const blob = await axios.get(`/api/pdf?file=${fileName}`, {
responseType: "blob"
});
const url = window.URL.createObjectURL(blob.data);
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", "file.pdf");
document.body.appendChild(link);
link.click();
}