【问题标题】:Save the data received in the XMLHttpRequest to a file将 XMLHttpRequest 中接收到的数据保存到文件中
【发布时间】:2014-06-16 15:22:48
【问题描述】:

我实际上遇到了从我的 nodeJs 服务器下载文件的问题。我在其他主题上花费了很多次,但没有任何成功......

我在客户端上有一个应用程序建议下载一些文本文件。所以我把这段代码用于下载过程:

'click .downloadF': function(event) {
    var $target = $(event.target);
    var file = $target.model();

    var download = $.get('/files/download'+'?'+Math.random(),
                        {id:file.id});
  },

到这里...非常简单。 在我的 nodeJS 方面,我做到了:

app.get('/files/download', function(req, res) {
var filePath = metrology.DownloadFile(req.query.id);

var filename = path.basename(filePath);
var mimetype = mime.lookup(filePath);

res.setHeader("Content-disposition", "attachment; filename=Metrology.csv");
res.setHeader('Content-type', mimetype);

var filestream = fs.createReadStream(filePath);
filestream.pipe(res);

});

在响应中,我得到了正确的文本数据,并且标题被正确设置为附件和文件类型。 回应:

连接保持活动 内容处置附件; 文件名=计量学.csv 内容类型 text/csv 日期 2014 年 6 月 16 日星期一 15:17:25 GMT Transfer-Encoding chunked X-Powered-By Express

内容:

NoPiece;NoRepetition;Mesure;Resultat; 1;1;1;3; 1;1;2;2; 1;1;3;2; 1;1;4;2; 2;1;1;2; 2;1;2;2; 2;1;3;2; 2;1;4;2;

现在...如何打开一个对话窗口将这些数据保存到指定的文件路径中???

我实际上是在 Mozilla 上调试,但也必须使用 IE9/11。

非常感谢您的帮助、想法、建议和(也许)解决方案 :-)

【问题讨论】:

  • 抱歉,我在任何地方都看到了相同的信息:需要将 Content-Disposition 定义为附件...但在我的情况下,我收到了数据,但没有打开对话框来保存文件.. . 请帮忙 :-/

标签: javascript node.js download


【解决方案1】:

jQuery .get 函数有必要吗? window.location.href 能实现你的目标吗?

'click .downloadF': function(event) {
    var $target = $(event.target);
    var file = $target.model();

    window.location.href='/files/download'+'?'+Math.random()+'&id='+file.id;
  },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多