使用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,我有两个疑问:
- 为何文档说明payload为text/plain,却出现要求JSON类型的错误?
- 有什么排查方向可推进问题解决?
问题分析与解决建议
针对疑问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
相关产品推荐
相关产品推荐

