Node.js使用内容处置文件名下载文件

我正在使用请求模块下载文件,但是当文件名必须来自“Content-Disposition”头时,我不太确定如何将响应管道输出到流.所以基本上,我需要读取响应,直到找到头,然后将其余的管道到该文件名.

示例显示如下:

请求( ‘http://google.com/doodle.png’).pipe(fs.createWriteStream( ‘doodle.png’));

我想做什么(伪代码):

var req = request('http://example.com/download_latest_version?token=XXX');
var filename = req.response.headers['Content-Disposition'];

req.pipe(fs.createWriteStream(filename));

我可以使用请求回调获取文件名:

request(url,function(err,res,body) {
 // get res headers here
});

但是不会否定使用管道的好处,而不是将下载的文件加载到内存中?

解决方法

我正在从雅虎收集图片,并没有使用content-disposition标题,而是提取date和content-type标头来构建一个文件名.这似乎足够接近你想要做的事情

var request = require('request'),fs = require('fs');

var url2 = 'http://l4.yimg.com/nn/fp/rsz/112113/images/smush/aaroncarter_635x250_1385060042.jpg';

var r = request(url2);

r.on('response',function (res) {
  res.pipe(fs.createWriteStream('./' + res.headers.date + '.' + res.headers['content-type'].split('/')[1]));

});

忽略我的图片选择请:)

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...