我想知道如何通过POST 下载 文件发送参数。例如,我有一个发票,其中已保存文件路径,我想通过参数发送该路径进行下载。但现在我只能用GET来做到这一点:
服务器:
app.get('/getfile', isLoggedIn, function(req, res) {
res.download('uploads/myExcelFile.xlsx', "myExcelFile.xlsx");
});
客户端:
window.open('/getfile');
或:
<a href="getfile" download="myExcelFile.xlsx">Download Text</a>
答案 0 :(得分:2)
您可以使用快递
var express = require('express');
var app = express();
app.get('/files/:file', function(req, res, next){ // this routes all types of file
res.download("./" + req.params.file);
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
});
假设文件确实存在,您可以使用此网址(localhost:3000 / files / myFile.txt)
答案 1 :(得分:0)
首先,您必须设置一些标题信息,然后创建文件对象并通过响应流式传输文件。
app.post('/getfile', isLoggedIn, function(req, res) {
res.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size,
'Content-Disposition': 'attachment; filename=your_file_name'
});
var file = fs.readFile(filePath, 'binary');
res.setHeader('Content-Length', stat.size);
res.setHeader('Content-Type', 'audio/mpeg');
res.setHeader('Content-Disposition', 'attachment; filename=your_file_name');
res.write(file, 'binary');
res.end();
});
在UI中,创建javascript表单对象并提交
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "URL");
form.submit();