如何使用http post Node.js下载文件

时间:2017-02-23 08:52:04

标签: javascript node.js html5

我想知道如何通过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>

2 个答案:

答案 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();