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

如何在Node.js中使用axios读取URL指向的docx文件

Node.js 环境使用axios读取URL指向Word文件并提取文本

核心依赖说明

处理docx文件不需要手动解析压缩包结构,直接使用成熟解析库即可:

  • axios:用于发起HTTP请求拉取远程文件
  • mammoth:专门用于解析.docx格式文件,支持提取纯文本/保留基础格式内容,轻量无额外系统依赖
  • 如需兼容旧版.doc(Word 97-2003格式),额外使用textract做统一解析即可,它会自动识别文件格式匹配解析逻辑

首先安装基础依赖:

npm install axios mammoth

读取URL指向docx文件并提取文本的实现

最容易踩的坑是拉取二进制文件时没指定响应类型,导致文件内容被编码损坏,核心实现代码如下:

const axios = require('axios');
const mammoth = require('mammoth');

async function fetchDocxText(docxUrl) {
  // 拉取远程文件,必须指定responseType为arraybuffer
  const res = await axios.get(docxUrl, {
    responseType: 'arraybuffer',
    timeout: 10000
  });
  // 转成Node.js原生Buffer供解析库使用
  const docxBuffer = Buffer.from(res.data);
  // 提取纯文本,需要保留基础格式可替换为convertToHtml方法
  const parseResult = await mammoth.extractRawText({ buffer: docxBuffer });
  return parseResult.value;
}

// 调用示例
(async () => {
  const text = await fetchDocxText('替换成你的目标docx文件URL');
  console.log('提取结果:', text);
})();

兼容.doc/.docx全版本Word文件的方案

mammoth仅支持2007版之后的docx格式,如果要处理任意版本的Word文件,用textract做解析层即可。
先安装对应依赖:

npm install axios textract

实现代码:

const axios = require('axios');
const textract = require('textract');

function fetchAnyWordText(wordUrl) {
  return new Promise(async (resolve, reject) => {
    try {
      const res = await axios.get(wordUrl, {
        responseType: 'arraybuffer',
        timeout: 15000
      });
      const fileBuffer = Buffer.from(res.data);
      // 基于响应头的content-type自动匹配解析规则
      textract.fromBufferWithMime(
        res.headers['content-type'],
        fileBuffer,
        (parseErr, text) => {
          if (parseErr) return reject(new Error(`文件解析失败:${parseErr.message}`));
          resolve(text);
        }
      );
    } catch (requestErr) {
      reject(new Error(`文件拉取失败:${requestErr.message}`));
    }
  });
}

// 调用示例
(async () => {
  const text = await fetchAnyWordText('替换成你的目标doc/docx文件URL');
  console.log('提取结果:', text);
})();

常见注意点

  • 拉取二进制文件时必须将axios的responseType配置为arraybuffer,否则二进制内容会被默认按UTF-8转码导致文件损坏,90%以上的解析乱码、文件损坏问题都是这个配置缺失导致的
  • 拉取需要鉴权的私有文件时,在axios配置的headers字段里带上对应的token、cookie等鉴权信息,否则会拿到权限校验的错误页面,不是真实文件内容
  • 部署到Linux环境处理.doc格式文件时,需要提前通过系统包管理器安装antiword依赖,否则textract无法解析旧版doc文件
  • 超过50M的大文件建议改用axios流式响应配合解析库的流式处理接口,避免全量加载到内存导致服务OOM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:27:22