You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node.js从URL下载TXT文件(无第三方库方案)

Node.js 无第三方库下载文件的最优实现

要实现无第三方库下载目标文件,直接用 Node.js 内置的 https 和 fs 模块即可,流式写入是最优方案——它不会把整个文件加载到内存,适合处理任意大小的文件,内存占用更低、性能更稳定。

以下是完整实现代码:

const https = require('https');
const fs = require('fs');
const path = require('path');

// 目标文件保存路径(当前脚本所在目录下的http.txt)
const savePath = path.join(__dirname, 'http.txt');
const fileUrl = 'https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/http.txt';

// 创建文件写入流
const fileStream = fs.createWriteStream(savePath);

https.get(fileUrl, (response) => {
  // 检查响应状态码,仅处理成功请求
  if (response.statusCode !== 200) {
    fileStream.close();
    fs.unlinkSync(savePath); // 删除已创建的空文件
    throw new Error(`请求失败,状态码:${response.statusCode}`);
  }

  // 将网络响应流直接导入文件写入流
  response.pipe(fileStream);

  // 监听文件写入完成事件
  fileStream.on('finish', () => {
    fileStream.close();
    console.log('文件下载完成,已保存到:', savePath);
  });

}).on('error', (err) => {
  fileStream.close();
  fs.unlinkSync(savePath); // 下载失败时清理无效文件
  console.error('下载请求出错:', err.message);
});

// 监听文件写入错误
fileStream.on('error', (err) => {
  fileStream.close();
  fs.unlinkSync(savePath);
  console.error('文件写入出错:', err.message);
});

关键细节说明:

  • 流式处理:通过 response.pipe(fileStream) 直接衔接网络流与文件流,避免一次性加载大文件到内存,尤其适合处理大体积文件。
  • 错误兜底:覆盖了请求错误、响应状态异常、文件写入错误三种场景,出错时自动清理已创建的空文件,避免残留无效文件。
  • 跨平台路径:用 path.join(__dirname, 'http.txt') 确保文件保存到当前脚本所在目录,兼容 Windows/Linux/macOS 不同路径格式。

内容的提问来源于stack exchange,提问作者3jay1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:32:05