node.js - resquest.js pipe 数据流下载文件时, 如何自动获取文件后缀名并保存? 在哪一步加入?

【字号: 日期:2022-09-13浏览:50作者:雯心

问题描述

我想要在 fs.createWriteStream 之前获取到这个链接的后缀名之后再 pipe 到这个数据流中保存文件.

Promise 的方式我试过, then 之后就是完整的 response, 不能写入数据流.并且 fs.writeFile 方法我也试过了, 写入格式不正确.

注意哈: URL中没有文件后缀名

下面是代码

const fs = require(’fs’);const Promise = require(’bluebird’);const request = require(’request’);let url = ’http://mmbiz.qpic.cn/mmbiz_jpg/D1Wza369eswnoapNaAdvtqygvMAnViaCLa8AMwwDZ4rebKrPvicxFf8zuibfialkPD3A7w8omWjicVm7GhFWcsibfGibw/0’;let file = fs.createWriteStream(’file’);request .get(url) .on(’response’, function (response) {let type = response.headers[’content-type’]type = ’.’ + type.substring(type.lastIndexOf(’/’) + 1);console.log(type);// 在这里加是不可以的 }) .pipe(file) .on(’end’, function () {console.log(’end’) })

问题解答

回答1:

let type = ’’;request .get(url) .on(’response’, function (response) {type = response.headers[’content-type’]type = ’.’ + type.substring(type.lastIndexOf(’/’) + 1);console.log(type);// 在这里加是不可以的 }) .pipe(fs.createWriteStream(’name’+type)) .on(’end’, function () {console.log(’end’) })

相关文章: