如何在表单数据触发器中解析文件名

问题描述 投票:2回答:1

从邮递员我正在发布我的逻辑应用程序。我发送以下信息:

{
    "headers": {
        "Cache-Control": "no-cache",
        "Connection": "keep-alive",
        "Accept": "*/*",
        "Accept-Encoding": "gzip,deflate",
        "Host": "prod-24.centralus.logic.azure.com:443",
        "User-Agent": "PostmanRuntime/6.4.0",
        "Postman-Token": "19018057-41ef-4f96-a3a1-cdbf0a1918bc",
        "Content-Length": "486",
        "Content-Type": "multipart/form-data; boundary=--------------------------117388521639837767242570"
    },
    "body": {
        "$content-type": "multipart/form-data; boundary=--------------------------117388521639837767242570",
        "$content": "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTExNzM4ODUyMTYzOTgzNzc2NzI0MjU3MA0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJzb2Z0d2FyZSI7IGZpbGVuYW1lPSJmaWxlLnppcCINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vemlwDQoNClBLAwQUAAAACACZVEhLillatwgAAAAGAAAACAAAAGZpbGUudHh0K0ktLslNBQBQSwECHwAUAAAACACZVEhLillatwgAAAAGAAAACAAkAAAAAAAAACAAAAAAAAAAZmlsZS50eHQKACAAAAAAAAEAGADAJqtCS0DTATYTq0JLQNMBlyUeQktA0wFQSwUGAAAAAAEAAQBaAAAALgAAAAAADQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTE3Mzg4NTIxNjM5ODM3NzY3MjQyNTcwDQpDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImRldmljZUlkIg0KDQpzMTIzNDUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0xMTczODg1MjE2Mzk4Mzc3NjcyNDI1NzAtLQ0K",
        "$multipart": [
            {
                "headers": {
                    "Content-Disposition": "form-data; name=\"software\"; filename=\"file.zip\"",
                    "Content-Type": "application/zip"
                },
                "body": {
                    "$content-type": "application/zip",
                    "$content": "UEsDBBQAAAAIAJlUSEuKWVq3CAAAAAYAAAAIAAAAZmlsZS50eHQrSS0uyU0FAFBLAQIfABQAAAAIAJlUSEuKWVq3CAAAAAYAAAAIACQAAAAAAAAAIAAAAAAAAABmaWxlLnR4dAoAIAAAAAAAAQAYAMAmq0JLQNMBNhOrQktA0wGXJR5CS0DTAVBLBQYAAAAAAQABAFoAAAAuAAAAAAA="
                }
            },
            {
                "headers": {
                    "Content-Disposition": "form-data; name=\"deviceId\""
                },
                "body": {
                    "$content-type": "application/octet-stream",
                    "$content": "czEyMzQ1"
                }
            }
        ]
    }
}

我想获取文件名值和文件的内容。我将创建一个Blob文件

谢谢,

azure-logic-apps
1个回答
3
投票

这就是我在做的方式。我假设您正在使用HTTP触发器设置为POST。在HTTP触发器添加Foreach连接器之后,如果您正在进行多文件上载,则可以遍历所有文件。

Foreach源将是这个表达式:triggerOutputs().body['$multipart']

在foreach中你可以用这个丑陋的表达式解析文件名,这很糟糕但是它有效:replace(replace(item().headers['Content-Disposition'], 'form-data; name="myFileUploadInput"; filename="', ''), '"', '')

AFAIK表达式中没有正则表达式支持,这会更好。你可能可以用substring做一些事情,但它也可能非常难看。

以下是你如何在foreach中获取物体以保存到blob存储:item().body

© www.soinside.com 2019 - 2024. All rights reserved.