Node.js / Express:通过ajax下载文件

我试图通过GET ajax调用dynamic请求一个文件下载。 我有以下客户端代码:

$(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文件(最终dynamic)。 我将如何去做这个正确的? 东西告诉我,我需要指定标题/内容types。

您应该将内容types和configuration设置为:

 Content-Type: application/octet-stream Content-Disposition: attachment;filename=\"main.js\" 

我相信你将不得不redirect到这个文件。 如果我没有弄错,你不能强制通过AJAX调用下载文件。

您是否打算将.js文件解释并应用到下载页面?

如果是这样,你可能会最终使用写()页面,无论你如何得到它,这不会是最好的做法。

请检查require.js 。 这是一个更好的方式来asynchronous和dynamic加载脚本,并在运行时应用它们。

在下载dynamic.js文件时遇到的一个困难是手动解决scheme,即依赖关系。 在.js文件依赖另一个会导致盲js未定义的错误。

此外,在将同步包含文件转换为asynchronous包含文件方面,还有一个运行时性能优化增益。

Require.js很好地解决了这些问题。

希望有所帮助。 祝一切顺利! 克林特