【发布时间】:2012-06-22 21:15:06
【问题描述】:
我正在尝试通过 GET 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 的建议,如果我没记错的话,当浏览器重定向到具有上述标题的文件时,它实际上并没有离开当前页面,而是打开了保存文件对话框。考虑到这一点,iframe 可能是多余的,但不要相信我的话。 (巴达达姆)
-
@Bit,有趣!我必须检查一下,看看它是否可以跨浏览器工作。
-
嘿,很棒的建议/想法。我试试看。
-
但是,由于我正在处理一个文本文件,我将如何防止浏览器仅查看它?我想提示用户下载它。
标签: javascript node.js get