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

如何用Azure Logic App通过PUT上传文件至SharePoint及问题排查

Azure Logic App 问题解答

问题1:从multipart PUT请求中提取文件名并传入文件保存模块

根据你提供的Create File输入内容,multipart请求的文件信息包含在$multipart[0].headers.Content-Disposition中,格式为form-data; name="file"; filename="test2.zip"。你可以通过Logic App的表达式直接解析出文件名,步骤如下:

  1. 在Create File模块的文件名字段中,使用以下表达式:
split(split(triggerBody()['$multipart'][0]['headers']['Content-Disposition'], 'filename="')[1], '"')[0]
  1. 表达式逻辑说明:
    • 第一层split按filename="分割字符串,得到包含文件名的后半段
    • 第二层split按"分割,提取出中间的文件名部分(如test2.zip)

这样就能自动将请求中的文件名传入文件保存模块。

问题2:错误含义及解决思路

错误含义

报错信息This method or property is not supported after HttpRequest.Form, Files, InputStream, or BinaryRead has been invoked表示:请求体已被读取过一次(比如通过解析Form数据、文件流等操作),后续无法再次读取原始请求流或相关属性。这是ASP.NET底层的限制,Logic App基于该框架实现,因此会触发此错误。

可能原因及解决

  • 重复读取请求体:检查你的Logic App流程,是否存在多个动作尝试读取请求的不同部分(比如先解析了multipart的Form数据,又尝试访问原始的InputStream)。
  • 流程变更:两周前正常运行现在报错,大概率是近期修改了流程步骤,新增了读取请求体的动作。

解决办法:

  • 避免重复读取请求体,确保所有需要使用请求内容的动作都基于同一解析结果(比如先将multipart内容保存到变量,后续动作直接引用变量)。
  • 检查并移除冗余的请求体读取动作,确保整个流程中只对请求体进行一次解析操作。

错误日志原文

{
  "error": {
    "code": 502,
    "source": "logic-apis-eastus.azure-apim.net",
    "clientRequestId": "46a9418a-454b-4114-ba00-0e7a4bcfd9d9",
    "message": "BadGateway",
    "innerError": {
      "status": 500,
      "message": "This method or property is not supported after HttpRequest.Form, Files, InputStream, or BinaryRead has been invoked.\r\nclientRequestId: 46a9418a-454b-4114-ba00-0e7a4bcfd9d9\r\nserviceRequestId: 46a9418a-454b-4114-ba00-0e7a4bcfd9d9"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:33:19