gpt4 book ai didi

node.js - 如何从 NodeJS 服务器下载 React 中的文件? (文件损坏)

转载 作者:行者123 更新时间:2023-12-05 03:38:03 24 4
gpt4 key购买 nike

我希望能够使用 nodejs 将 pdf 文件发送到前端。但是当我这样做时,出现错误,无法打开文件。错误是这样的(错误翻译:加载PDF文档时出错): enter image description here

我认为一切都很好,但仍然没有工作。

这是 nodeJS 代码:

routerTrainer.get("/download-training", verifyJWT, async (req, res) => {

const { training_id } = req.headers;

let training = await Training.findOne({
where: { id: training_id },
});

if (training) {
const path = "/home/gonsa02/Disk/Projects/";
const dirname = "uploads/trainings/";
res.download(`${path}${dirname}${training.file_id}`);
}
});

这是 React 前端代码:

const downloadTraining = async (id) => {
const fileReader = new FileReader();
const JWT = new ClassJWT();
const axiosReq = axios.create();
await JWT.checkJWT();
axiosReq
.get(`${serverPath}/download-training`, {
headers: {
training_id: id,
token: JWT.getToken(),
responseType: "blob",
},
})
.then((res) => {
console.log(res);
fileReader.readAsDataURL(new Blob([res.data]));
})
.catch((err) => console.log(err));

fileReader.addEventListener("loadend", () => {
const blobString = fileReader.result;
const link = document.createElement("a");
link.href = blobString;
link.setAttribute("download", "file.pdf");
document.body.appendChild(link);
link.click();
});
};

不要担心所有具有 JWT 的东西,比如 verifyJWT 或 ClassJWT,这是 json 网络 token 的实现,它可以正常工作。

如果有人知道如何修复它,请告诉我。

最佳答案

也许你可以试试这个

fetch("filepath", {
headers: headers
})
.then(res => res.blob())
.then(blob => {
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.setAttribute("download", "file.pdf");
document.body.appendChild(link);
link.click();
})

我不测试它。

关于node.js - 如何从 NodeJS 服务器下载 React 中的文件? (文件损坏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69098954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com