从 API 下载 pdf 文件
Download pdf file from API
我正在创建一个在单击按钮后创建和下载 pdf 的功能。我使用 express 作为后端,react/readux/axios 作为前端。
我的后端运行在与前端不同的端口上。
所以我用 axios 调用 API,然后快速创建 pdf 并用 sendFile 响应。
用 postman 测试我的 post 请求时一切正常。
当我从我的 React 应用程序使用它时,没有下载文件
快递
router.post('/', function( req, res, next){
var data = req.body.data
options = {};
// init html string
var html = ejs.renderFile(__dirname + '/template/facture.ejs', {data: data}, options, function(err, str){
if(err){
return err;
}
return str;
});
// create pdf
conversion({ html: html}, (err, pdf) => {
var output = fs.createWriteStream(`documents/factures/${data.Référence}.pdf`);
pdf.stream.pipe(output);
});
var filepath = path.join(pathToDocument, '/factures/',`${data.Référence}.pdf`);
res.download(filepath);
});
Axios 调用
export function generatePdf(data){
return dispatch => {
axios.post(`${API_ENDPOINT}api/facture-pdf`,
{ data: data },
{ headers: {
'Content-Type': 'application/json',
'x-access-token': localStorage.getItem('token')
}
})
.then(function (response) {
return response.data;
})
.then( pdf => {
window.open(`${API_ENDPOINT}api/${type}-pdf/${data.Référence}`, '_blank')
})
}
文件下载仅在 'GET' request
的情况下有效。
您可以简单地创建一个接受 'GET' request
的 API。
从客户端,在某些操作中,您可以调用 window.open('server full url with api path')
.
通过上面的操作开始下载您的文件。
我正在创建一个在单击按钮后创建和下载 pdf 的功能。我使用 express 作为后端,react/readux/axios 作为前端。
我的后端运行在与前端不同的端口上。
所以我用 axios 调用 API,然后快速创建 pdf 并用 sendFile 响应。
用 postman 测试我的 post 请求时一切正常。
当我从我的 React 应用程序使用它时,没有下载文件
快递
router.post('/', function( req, res, next){
var data = req.body.data
options = {};
// init html string
var html = ejs.renderFile(__dirname + '/template/facture.ejs', {data: data}, options, function(err, str){
if(err){
return err;
}
return str;
});
// create pdf
conversion({ html: html}, (err, pdf) => {
var output = fs.createWriteStream(`documents/factures/${data.Référence}.pdf`);
pdf.stream.pipe(output);
});
var filepath = path.join(pathToDocument, '/factures/',`${data.Référence}.pdf`);
res.download(filepath);
});
Axios 调用
export function generatePdf(data){
return dispatch => {
axios.post(`${API_ENDPOINT}api/facture-pdf`,
{ data: data },
{ headers: {
'Content-Type': 'application/json',
'x-access-token': localStorage.getItem('token')
}
})
.then(function (response) {
return response.data;
})
.then( pdf => {
window.open(`${API_ENDPOINT}api/${type}-pdf/${data.Référence}`, '_blank')
})
}
文件下载仅在 'GET' request
的情况下有效。
您可以简单地创建一个接受 'GET' request
的 API。
从客户端,在某些操作中,您可以调用 window.open('server full url with api path')
.
通过上面的操作开始下载您的文件。