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

Node.js通过SharePoint REST API读取文档库.docx文件的问题

在Node.js中读取SharePoint文档库文件到变量的解决方案

嘿,我来帮你解决这个问题!你遇到的docx返回PK!����...的内容其实不是乱码——docx本质是一个ZIP压缩包,直接调用$value接口拿到的是它的原始二进制数据,这是完全正常的。下面分情况给你讲Node.js里的具体实现方法:

1. 读取文本文件(如.txt)

对于纯文本文件,我们可以直接请求$value接口并指定接收文本格式,拿到的内容可以直接存入字符串变量:

const axios = require('axios');

async function readSharePointTextFile(siteUrl, filePath, authToken) {
  try {
    // 对文件路径进行URL编码,避免特殊字符导致请求失败
    const encodedFilePath = encodeURIComponent(filePath);
    const response = await axios.get(
      `${siteUrl}/_api/web/GetFileByServerRelativeUrl('${encodedFilePath}')/$value`,
      {
        headers: {
          'Authorization': `Bearer ${authToken}`, // 必须携带有效的访问令牌
          'Accept': 'text/plain' // 指定接收纯文本格式
        }
      }
    );

    // response.data就是文本内容,直接存入变量
    const fileContent = response.data;
    console.log('读取到的文本内容:', fileContent);
    return fileContent;
  } catch (error) {
    console.error('读取文本文件失败:', error.response?.data || error.message);
    throw error;
  }
}

// 使用示例
const siteUrl = 'https://你的SharePoint站点地址';
const txtFilePath = '/Shared Documents/s_C_locations.txt';
const authToken = '你的有效访问令牌'; // 需要提前获取OAuth令牌
readSharePointTextFile(siteUrl, txtFilePath, authToken);

2. 读取docx文件并处理

对于docx这类二进制文件,我们需要获取原始二进制数据(存入Buffer变量),如果需要可读文本,可以用第三方库(比如mammoth)解析:

步骤1:安装依赖

首先安装所需的包:

npm install axios mammoth

步骤2:实现代码

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

async function readSharePointDocxFile(siteUrl, filePath, authToken) {
  try {
    const encodedFilePath = encodeURIComponent(filePath);
    const response = await axios.get(
      `${siteUrl}/_api/web/GetFileByServerRelativeUrl('${encodedFilePath}')/$value`,
      {
        headers: {
          'Authorization': `Bearer ${authToken}`
        },
        responseType: 'arraybuffer' // 关键:指定接收二进制数组,Node.js中会自动转为Buffer
      }
    );

    // response.data是Buffer类型,直接存入变量
    const docxBuffer = response.data;
    console.log('docx文件二进制数据大小:', docxBuffer.length + '字节');

    // 可选:将docx解析为纯文本
    const parseResult = await mammoth.extractRawText({ buffer: docxBuffer });
    const docxTextContent = parseResult.value;
    console.log('解析后的docx文本内容:', docxTextContent);

    // 返回二进制数据和解析后的文本,按需使用
    return { docxBuffer, docxTextContent };
  } catch (error) {
    console.error('读取docx文件失败:', error.response?.data || error.message);
    throw error;
  }
}

// 使用示例
const docxFilePath = '/Shared Documents/你的文档.docx';
readSharePointDocxFile(siteUrl, docxFilePath, authToken);

关于权限的注意事项

你需要提前获取有效的SharePoint访问令牌(Bearer Token),常见的获取方式包括:

  • 通过Azure AD OAuth 2.0流程获取(适用于独立Node.js应用)
  • 在SPFx应用中使用context.authToken(适用于SharePoint框架开发)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:01