我已经使用Exceljs npm模块在后端(Express JS)创建了一个Excel文件。我将其存储在临时目录中。现在,我想将文件从后端发送到前端,并在用户单击按钮时将其下载到前端。我在两件事上感到震惊1.如何通过HTTP POST请求将文件从后端发送到前端2.然后如何在前端下载文件
如果我正确理解了您的问题,则希望用户能够单击前端上的按钮,然后将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');
});