我试图通过GET ajax调用来动态请求文件下载。我有以下的客户端代码:Node.js/Express:通过ajax下载文件
$(function() {
$('#submit').click(function() {
$.ajax({
type: "GET",
url: "/download/" + "filename",
dataType: "json",
contentType: "application/json",
complete: function() {
console.log('Complete');
},
success: function() {
console.log('Success');
},
error: function() {
console.log('Error');
}
});
});
});
在节点服务器我也有以下行(请注意,我不知道这是否是这样做的正确方法)
app.get('/download/:filename', function(req, res) {
console.log(req.params);
res.write(fs.readFileSync(__dirname + "/../public/javascripts/main.js", 'utf8'));
});
所以我想实际下载该JavaScript文件(最终动态地)。我会如何正确地做这件事?有些东西告诉我我需要指定标题/内容类型。
我很确定你不能用Ajax做到这一点。更好的策略是将文件加载到iframe *和*根据@Bit Destroyer的建议设置标题。 – apsillers
Per @apsillers建议,如果我没有弄错,当浏览器重定向到具有上述标题的文件时,它实际上并不从当前页面浏览,而只是打开保存文件对话框。考虑到这一点,iframe可能是多余的,但不要拿我的话来说。 (ba da dum) – jamesmillerio
@坐,有趣!我必须检查一下,看看它是否可以跨浏览器使用。 – apsillers