如何解决Canvas Power App 使用 Rest API 将文件上传到 Salesforce
我是 PowerApps 和流程自动化的新手。我正在构建一个简单的 Canvas Power App,它接收用户输入,然后组合 JSON,然后使用 REST API 通过流将 JSON 发布到 Salesforce。提交按钮动作如下
Collect(
FormInfo,{
name: nameInput.Text,title: titleInput.Text,manager: managerInput.Text,phoneNumber: phoneNumInput.Text,email: emailInput.Text,startDate: Text(startDateInput.SelectedDate),roleProfileInfo: roleProfileInfoInput.Text,userSubmitting: User().Email }
);
Set(FormObj,JSON(FormInfo));
SFNewUserRequest_1.Run(FormObj);
Reset(nameInput);
Reset(titleInput);
Reset(managerInput);
Reset(phoneNumInput);
Reset(emailInput);
Reset(startDateInput);
Reset(roleProfileInfoInput);
用户输入被组成为 JSON 并将其发送到流。我不确定如何在需要通过 REST 服务发送到 Salesforce 的电源应用程序中添加上传文件。那里的大多数示例都是将文件加载到 Sharepoint 库,我只是想知道这是否也是 ossible。
解决方法
这是可能的。在某些情况下,您必须创造性地解析出正确的 Base64 编码图像数据(如果尝试将 .jpg/.png 传递给 Power Automate)。
以下是我在用户使用 OnSelect
控件选择图像后使用 Save
按钮的 Add Media
的一些代码:
Set(varFileExt,Right(btnAddMedia.FileName,3));
Collect(colPhotoForFlow,{
projectGUID: varGUID,picUri: imgAddedMedia.Image,picFilename:
If(
btnAddMedia.FileName = "image.jpg",Concatenate(
Text(Now(),"[$-en-US]yyyy-mm-dd_hhmmss"),".jpg"
),btnAddMedia.FileName
),fileExtension: varFileExt,picJSON:
If(
Or(
Lower(varFileExt) = "jpg",Lower(varFileExt) = "jpeg"
),Mid(JSON(imgAddedMedia.Image,IncludeBinaryData),25,Len(JSON(imgAddedMedia.Image,IncludeBinaryData)) - 25),Lower(varFileExt) = "png",24,IncludeBinaryData)) - 24)
),picCaption: txtCaption.Text
}
);
Reset(txtCaption);
Reset(btnAddMedia)
这里有很多(有价值的)东西需要解压:
-
使用
-
varFileExt
是因为 .jpg 的 Base64 标头中有 4 个字符(“jpeg”而 .png 只有 3 个“png”)- 因此
Mid(25)
与Mid(24)
的 Base64 解析
- 因此
- 如果用户使用移动设备并使用该应用拍摄照片,PowerApps 将自动为图像命名
image.jpg
- 因此是用于文件命名的
If()
语句
- 因此是用于文件命名的
以下是我在用户上传完图片后使用最终 OnSelect
按钮的 Submit
的一些代码:
Set(varUploadPhotos,JSON(colPhotoForFlow,IncludeBinaryData));
PA_PICS_TO_ENDPOINT.Run(varUploadPhotos)
您也可以将其调整为其他文件类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。