我正在使用 Request 模块下载文件,但是当文件名必须来自“Content-Disposition”标头时,我不太确定如何将响应传输到输出流。所以基本上,我需要读取响应直到找到标头,然后将其余部分通过管道传输到该文件名。
这些示例显示如下:
request('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
});
但这是否会抵消使用管道而不将下载的文件加载到内存中的好处?
我正在从 yahoo 请求一张图片,但它没有使用content-disposition
标题,但我正在提取date
and 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]));
});
请忽略我的图像选择:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)