Node.js / Express :通过 ajax 下载文件
Node.js / Express : download file via ajax
我正在尝试通过 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文件(最终是动态的)。我将如何正确地做到这一点?有些东西告诉我我需要指定标题/内容类型。
返回时,应将内容类型和处置设置为:
Content-Type: application/octet-stream
Content-Disposition: attachment;filename='"main.js'"
我相信你必须重定向到这个文件。如果我没记错的话,您无法通过 AJAX 调用强制下载文件。
您是否打算将.js文件解释并应用于下载页面?
如果是这样,无论你如何获得它,你最终可能会使用 write() 到页面,这不是最佳实践。
而是查看要求.js。这是异步和动态加载脚本并在运行时应用它们的更好方法。
使用手动解决方案下载动态.js文件时会遇到的一个困难是依赖项。在.js依赖于另一个文件的文件上会导致盲 js 未定义错误。
此外,在将同步包含文件转换为异步包含文件时,运行时性能优化也有所提高。
需要.js很好地解决了这些问题。
希望有帮助。万事如意!克林特·伊斯特
相关文章:
- 使用ajax下载与存储名称不同名称的文件
- 使用AJAX下载文件.来自SD卡
- 使用ajax下载文件
- AJAX下载后直接上传文件(无需存储)
- 为什么我得到“;访问控制允许起源”;当已经设置了头时,通过AJAX下载文件
- 可通过Ajax下载CSV文件
- 使用xhr.onprogress可以在不耗尽内存的情况下处理大型ajax下载
- 通过 ajax 下载文件
- Node.js / Express :通过 ajax 下载文件
- 使用 AJAX 下载 CSV
- AJAX 下载大文件并发布到其他域
- 通过 AJAX 下载 PHP
- 使用jquery ajax下载pdf文件
- 不使用ajax下载文件
- AngularJS-通过AJAX下载文件
- 使用ajax下载文件,readfile不起作用
- 从ajax下载数据文件
- 连接Ajax下载"GET"
- ExtJS 4 -如何使用Ajax下载文件
- 显示使用XHR2/AJAX下载文件的进度条