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

使用Graph API上传文件至SharePoint库遇JSON请求payload读取错误

关于Power Apps调用Graph API上传TXT文件报“无法读取JSON请求payload”的问题

我参考Reza Dorrani的教程,通过Power Apps将简单TXT文档上传至SharePoint库,已解决权限相关问题,但卡在以下错误:
无法读取JSON请求payload

使用的PUT请求代码如下:

Office365Groups.HttpRequest(
        "https://graph.microsoft.com/v1.0/sites/{mySiteId}/drives/{myDriveId}/root:/file.txt:/content:",
        "PUT",
        ThisRecord.Value
    )

注:其中{mySiteId}和{myDriveId}已确认正确,ThisRecord.Value是附件字段的文件内容,在Graph Explorer测试时也得到相同错误。

根据微软官方文档,该接口的payload应为text/plain,我有两个疑问:

  1. 为何文档说明payload为text/plain,却出现要求JSON类型的错误?
  2. 有什么排查方向可推进问题解决?

问题分析与解决建议

针对疑问1:文档说明与JSON错误的矛盾

这个错误并非接口本身要求JSON,而是Office365Groups.HttpRequest函数默认会把请求体按JSON格式处理,自动添加Content-Type: application/json请求头。但上传文本的Graph接口需要的是Content-Type: text/plain,请求头不匹配导致服务端无法解析请求体,误以为你要传JSON但格式不符合要求。

针对疑问2:排查与解决方向

  • 指定正确的请求头:在Office365Groups.HttpRequest的第四个参数中添加请求头,明确设置Content-Type为text/plain,修改后的代码示例:
Office365Groups.HttpRequest(
        "https://graph.microsoft.com/v1.0/sites/{mySiteId}/drives/{myDriveId}/root:/file.txt:/content",
        "PUT",
        ThisRecord.Value,
        {
            "Content-Type": "text/plain"
        }
    )
  • 验证文件内容格式:用Power Apps的Label控件显示ThisRecord.Value的内容,确认是纯文本,没有多余的JSON格式字符(比如引号、括号)。
  • 调整Graph Explorer测试配置:在Graph Explorer测试时,手动设置请求头Content-Type: text/plain,请求体直接输入纯文本内容(不要用JSON包裹),验证是否能成功上传。
  • 检查接口路径细节:确认接口路径末尾的冒号已移除——正确路径应为https://graph.microsoft.com/v1.0/sites/{mySiteId}/drives/{myDriveId}/root:/file.txt:/content,多余的冒号可能导致解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:23:21