将Excel文件从后端发送到前端并在前端下载

问题描述 投票:0回答:1

我已经使用Exceljs npm模块在后端(Express JS)创建了一个Excel文件。我将其存储在临时目录中。现在,我想将文件从后端发送到前端,并在用户单击按钮时将其下载到前端。我在两件事上感到震惊1.如何通过HTTP POST请求将文件从后端发送到前端2.然后如何在前端下载文件

node.js rest express http-post exceljs
1个回答
0
投票

如果我正确理解了您的问题,则希望用户能够单击前端上的按钮,然后将Excel文件下载到他们的计算机。您要发送POST请求以下载文件。这是完成此任务的相关代码。请注意,我使用的是由express-generator创建的Express应用程序,因此您可能需要针对用例进行调整:

客户端

views / index.ejs

<body>
  <button id="excelDownload">Download Excel File</button>
  <script type="text/javascript" src="/javascripts/main.js"></script>
</body>

public / javascripts / main.js

const excelDownloadButton = document.getElementById('excelDownload');

excelDownloadButton.addEventListener('click', async () => {
  const response = await fetch('http://localhost:3000/excel', { method: 'POST' })
  window.location = 'http://localhost:3000/excel';
});

服务器端

routes / index.js

router.get('/', function(req, res, next) {
  res.render('index');
});

router.post('/excel', (req, res, next) => {
  res.redirect('/excel');
});

router.get('/excel', (req, res, next) => {
  res.download('./tmp/excel.xlsx');
});

如果您不使用POST请求,则可以简化为:

public / javascripts / main.js

const excelDownloadButton = document.getElementById('excelDownload');

excelDownloadButton.addEventListener('click', () => {
  window.location = 'http://localhost:3000/excel';
});

routes / index.js

router.get('/', function(req, res, next) {
  res.render('index');
});

router.get('/excel', (req, res, next) => {
  res.download('./tmp/excel.xlsx');
});
© www.soinside.com 2019 - 2024. All rights reserved.