如何在Power Automate中从When a HTTP request is received触发器获取附件并处理
我来帮你搞定这个问题!从你贴出的JSON响应来看,你的HTTP触发器已经成功接收了multipart格式的上传文件,接下来只需要几个简单步骤就能提取文件并保存到SharePoint:
步骤1:定位上传的文件数据
你的触发器输出里,body字段下的$multipart数组就是所有上传的文件集合(哪怕只传了一个文件,它也是数组形式)。每个数组元素对应一个上传的文件,包含了文件的元数据和内容:
headers.Content-Disposition:包含文件名信息body.$content:Base64编码的文件内容body.$content-type:文件的MIME类型
步骤2:提取文件名和文件内容
你可以用Power Automate的表达式来直接提取这些信息:
提取文件名:
split(split(triggerBody()?['$multipart'][0]['headers']['Content-Disposition'], 'filename="')[1], '"')[0]这个表达式的逻辑是:先按
filename="分割字符串,取第二部分,再按"分割,取第一部分,就能拿到纯文件名(比如ApplicationForm.pdf)。提取文件内容:
triggerBody()?['$multipart'][0]['body']['$content']直接引用这个字段即可,Power Automate会自动处理Base64编码的内容。
步骤3:保存到SharePoint
添加SharePoint连接器的Create file动作,然后填写以下参数:
- Site Address:选择或输入你的SharePoint站点地址
- Folder Path:指定文件要保存的文件夹(比如
Shared Documents/上传文件) - File Name:粘贴刚才提取文件名的表达式
- File Content:粘贴提取文件内容的表达式
处理多个文件的情况
如果你的HTTP请求可能上传多个文件,那么需要添加Apply to each动作,将triggerBody()?['$multipart']作为循环的输入,然后在循环内部执行上面的“提取+保存”操作即可,这样就能批量保存所有上传的文件。
测试提示
你可以先添加一个Compose动作,把提取的文件名和内容放进去测试,确认表达式正确后再连接SharePoint的保存动作,避免误操作。
内容的提问来源于stack exchange,提问作者cymorg
相关产品推荐
相关产品推荐

