【问题标题】:Downloading a file sent in response to a POST request via nodejs?通过nodejs下载响应POST请求发送的文件?
【发布时间】:2012-05-11 16:50:15
【问题描述】:

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

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

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

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

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);
};

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

非常感谢您花时间阅读。

【问题讨论】:

  • 我面临同样的问题。我在%PDF-1.4 %���� {more data} %%EOF 中获取数据,但是我应该如何下载文件。

标签: javascript ajax node.js post express


【解决方案1】:

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

2。 更好地使用Get

【讨论】:

  • 假设我将 ajax 转换为 GET,我仍然不确定客户端将如何接收数据。
  • 如果用Get代替,可以让浏览器下载。或者你可以在ajax回调函数中处理数据。
  • 比如他们在隐藏的iframe中获取数据,从iframe中获取数据。link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 2018-05-04
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
相关资源
最近更新 更多