通过nodejs下载为响应POST请求而发送的文件?

kjb*_*kjb 3 javascript ajax post node.js express

我在发出下载文件的POST命令时遇到问题.

在客户端,我正在尝试POST到特定的URL,包括指定要下载的文件的参数.

var req = $.ajax({
    type: 'POST',
    url : '/click',
    data: { 'path' : filename }
   });
req.done(function(data) {
// Download the file here?
Run Code Online (Sandbox Code Playgroud)

服务器最终会触发一个执行此操作的方法:

function downloadFile(req, res) {
  var dir = req.session.currentdir + req.body.path;
  mimetype = (shell.exec("file --mime-type '" + dir + "'", {silent:true}).output);
  mimetype = mimetype.substring(mimetype.indexOf(": ") + 2, mimetype.length);

  var stat = fs.statSync(dir);
  res.writeHead(200, {'Content-Type' : mimetype,
                      'Content-Length': stat.size });
  var fileStream = fs.createReadStream(dir);
  fileStream.pipe(res);
};
Run Code Online (Sandbox Code Playgroud)

现在我似乎无法让客户端接受我想要管道的文件..在关闭之前,它只是挂了很长时间.让客户端下载我想要发回的文件的适当方法是什么?

非常感谢您花时间阅读.

neo*_*ope 5

1. resp.setHeader("Content-Disposition","attachment; filename = \"xxxx.xxx \"");

2.更好地使用Get