如何在Node.js中使用curl命令实现文件下载功能
方案1:使用Node.js原生模块实现(无需第三方依赖)
直接用内置的http/https模块配合文件流写入,文件名可以完全自定义,和curl命令的> 文件名逻辑完全一致:
const http = require('http'); const fs = require('fs'); // 自定义保存的文件路径+名称 const savePath = './file.extension'; const fileWriteStream = fs.createWriteStream(savePath); http.get('http://localhost:8042/endpoint/file', (res) => { res.pipe(fileWriteStream); // 下载完成监听 fileWriteStream.on('finish', () => { fileWriteStream.close(); console.log('文件下载完成'); }); }).on('error', (err) => { // 下载出错时清理未完成的残次文件 fs.unlink(savePath, () => {}); console.error('下载出错:', err.message); });
如果请求的是HTTPS接口,把引入的http模块替换为https即可。
方案2:node-libcurl库设置文件名的实现方式
只需要把curl返回的响应块写入自定义路径的文件流即可:
const { Curl } = require('node-libcurl'); const fs = require('fs'); // 自定义保存的文件路径+名称 const savePath = './file.extension'; const fileWriteStream = fs.createWriteStream(savePath); const curl = new Curl(); curl.setOpt('URL', 'http://localhost:8042/endpoint/file'); // 接收响应数据块写入文件 curl.on('data', (chunk) => { fileWriteStream.write(chunk); }); // 下载完成处理 curl.on('end', () => { fileWriteStream.close(); curl.close(); console.log('文件下载完成'); }); // 出错处理 curl.on('error', (err) => { fs.unlink(savePath, () => {}); curl.close(); console.error('下载出错:', err.message); }); curl.perform();
两种方案都可以通过修改savePath变量的值,自由设置下载文件的保存路径和名称。
内容的提问来源于stack exchange,提问作者Alexandru DuDu
相关产品推荐
相关产品推荐

