Azure 逻辑应用程序 - 如何将文件从字节数组上传到 Azure Blob 存储

Azure Logic App - How to upload file to Azure Blob Storage from byte array

我正在尝试创建一个由包含 JSON 请求负载的 HttpRequest 触发的逻辑应用程序。在此 JSON 中,一个字段包含文件:

{
"EntityId": "45643",
"SharedGuid": "00000000-0000-0000-0000-000000000000",
"Document": {
    "DocumentName": "MyFileName.pdf",
    "File": "JVBERi0xLjMKJfv8/f4KMS.....lJUVPRg=="
}}

此 "file" 内容由客户应用程序使用以下 C# 函数生成:File.ReadAllBytes("local path here")。

我设法将字节数组上传到 blob 存储。但是一旦文件上传到 Blob 存储中,该文件就无效了。

我为 JSON 模式定义中的文件尝试了不同的文件内容:字符串、二进制、application/octet-stream。

我们将不胜感激。

你的httprequest代码里有没有做byte转Base64String的操作,就像下面的代码:

byte[] b = File.ReadAllBytes(@"filepath");
string s = Convert.ToBase64String(b);

根据你提供的文件内容,你好像已经按照上面的方法转成了base64string,所以我提供以下解决方案:

对于此要求,您可以在 "Parse JSON" 操作中将响应数据解析为字符串(不需要在架构中使用 "binary"),然后在 "Create blob"动作,请参考如下截图:

"Blob content"中的表达式为:

base64ToBinary(body('Parse_JSON')?['Document']?['File'])

希望对你有帮助~

如果还有问题,请随时告诉我。