使用node express js下载文件
Downloading file with node express js
我想用express js下载一个文件,但是我遇到了一些麻烦。
函数如下:
var download = function(uri, filename, callback) {
request
.get(uri)
.on('response', function (response) {
var ext = response.headers['content-type'].split('/');
filename += '.' + ext[1];
})
.pipe(fs.createWriteStream(filename));
};
问题是我不知道文件的扩展名,所以我需要在响应头中获得它,但ext[1]
值不会随着文件扩展名增加我的文件名。我甚至不能在函数外通过引用来设置变量
- 我认为你的管道在'filename'获得任何数据之前被触发。
- 不应该使用'/'分割
试试这个:
var mime = require('mime-types'); // After npm install mime-types
request
.get(uri)
.on('response', function (response) {
var responseType = (response.headers['content-type'] || '').split(';')[0].trim();
var ext = mime.extension(responseType);
filename += '.' + ext;
var fileStream = fs.createWriteStream(filename)
.on('finish', function() {
//Download complete
})
this.pipe(fileStream);
})
注:您正在下载'request'模块,而不是express。
相关文章:
- 如何在生成下载文件时显示加载动画
- 直接下载文件,而不是从window.open(url)
- Javascript运行php文件,然后下载文件
- 在单击href链接的同时下载文件
- 通过javascript下载文件时设置文件名
- HTML锚标记无法在android平台中下载文件
- 链接/按钮从子文件夹下载文件--浏览器只是浏览
- iPhone强制下载文件
- 正在下载文件,同时加载另一个页面
- 如何在node.js中只下载文件的前10 KB
- 如何使用XMLHttpRequest下载文件
- 使用angular js在前端下载文件
- 使用blob从ajax结果下载文件
- 通过Android Chrome浏览器下载文件
- 使用AJAX下载文件.来自SD卡
- 如何使用phonegap从android中的URL下载文件
- 使用ajax下载文件
- 无法使用Angular JS和spring MVC打开下载文件
- 无法使用API-node.js从Google Drive下载文件
- 点击jQuery按钮下载文件