Azure Logic应用程序:文件在通过http发送时损坏 [英] Azure Logic Apps: files get corrupted when sent via http

查看:23
本文介绍了Azure Logic应用程序:文件在通过http发送时损坏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用逻辑应用程序调用ConnectWise文档API来将图像、PDF、电子邮件等附加到票证。我可以通过邮递员直接呼叫终结点,一切正常,当我尝试在Logic Apps中复制请求时,看起来一切正常,但当我得到最后的文件(附在我的ConnectWise票证上)时,图像、EXCEL表格、任何损坏的东西都会被破坏。文本附件以某种方式工作。

逻辑应用程序侦听邮箱,因此我一直在提取附件并上传到BLOB存储,并在我的请求中发送该文件的内容(通过GET BLOB获得)。当文件存储在Azure存储中时,它们是完好的(我可以下载它们并通过邮递员发送它们,它们显示得很好)。

知道这里可能发生了什么吗?详细信息如下(对不起,我不确定图像在堆栈溢出时是如何工作的):

Blob Cycle

HttpRequest

下面是代码表示:

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Dis-data; name="recordId"

@{body('Extract_Ticket_Id')['id']}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Dis-data; name="recordType"

Ticket
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Dis-data; name="title"

@{items('For_each')['Name']}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Dis-data; name="file"; filename="@{items('For_each')['Name']}"

@{body('Get_Attachment')}
------WebKitFormBoundary7MA4YWxkTrZu0gW--

获取Blob是从存储中获取Blob的最佳方式吗?我还没能找到任何其他的方法,我觉得这个方法应该行得通。

提前感谢您的帮助!如果您需要更多详细信息,请告诉我!

~Josh

PS:这里也有类似的问题,但我不知道我是否也有同样的问题,因为我无法访问服务器:Azure logic app http post multipart/form-data file upload

生成的请求示例:

"headers":{"Authorization":"sanitized","Content-Type":"多部分/表单数据;boundary=--------------------------784847071658899446745122"}

"body":"----------------------------784847071658899446745122
Content-Disposition: form-data; name="file"; filename="Email to Ticket Review.xlsx"
Content-Type: image/png

PKu0003u0004u0014u0000u0006u0000u0000u0000u0000!u0000��`��u0001u0000u0000:u0007u0000u0000u0013u0000u0002[Content_Types].xml 

(Blob内容持续一段时间)


----------------------------784847071658899446745122
Content-Disposition: form-data; name="recordType"

Ticket
----------------------------784847071658899446745122
Content-Disposition: form-data; name="title"

Email to Ticket Review.xlsx
----------------------------784847071658899446745122
Content-Disposition: form-data; name="recordId"

1257561
----------------------------784847071658899446745122--"}

推荐答案

您需要切换到代码视图才能手动应用此函数,最终的Http正文应如下所示:

"body": "@{base64ToBinary(items(‘For_each’)?[‘ContentBytes’])}",

这篇关于Azure Logic应用程序:文件在通过http发送时损坏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆