我的服務器中有 pdf,我將其發送給客戶端。我進入blob并使用它在新視窗中打開的URL。它顯示這樣的頁面
%PDF-1.4
1 0 obj
<<
/Title (??????)
/Creator (??????)
/Producer (???????Q?t? ?5?.?5?.?1)
/CreationDate (D:20211128130647)
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
>>
endobj
4 0 obj .....
我的代碼
axios
.post(DOMENNAME "/API/getPdf", { responseType: 'blob', body: id })
.then((res) => {
const url = window.URL.createObjectURL(new Blob([res.data],{type: "application/pdf"}));
window.open(url);
})
.catch((e) => {
console.log(e.message);
dispatch(getPdfFailure());
});
服務器路徑
module.exports.taskGetPdf=(req,res)=>{
res.set("Access-Control-Allow-Origin", "*");
res.set("Access-Control-Allow-Methods", "GET, OPTIONS");
res.set("Access-Control-Allow-Headers", "Content-Type");
res.sendFile("result38555.pdf", { root: __dirname })
uj5u.com熱心網友回復:
問題出在請求方法中,我應該使用 GET 請求而不是 POST。然后我改變了一切。
export const getPdf = (id) => {
return (dispatch) => {
axios
.get(DOMENNAME "/API/getPdf" "/" id, {
responseType: "blob",
})
.then((res) => {
let blob = new Blob([res.data], { type: "application/pdf" });
const url = URL.createObjectURL(blob);
let newWin = window.open();
newWin.location.href = url;
})
.catch((e) => {
console.log(e.message);
dispatch(getPdfFailure());
});
};
};
服務器
module.exports.taskGetPdf = (req, res) => {
res.set("Access-Control-Allow-Origin", "*");
res.set("Access-Control-Allow-Methods", "GET, OPTIONS");
res.set("Access-Control-Allow-Headers", "Content-Type");
console.log(req.params.id);
res.sendFile(`result${req.params.id}.pdf`, { root: __dirname });
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377368.html
