Azure 逻辑应用程序 - 如何使用 HTTP 触发器创建文件到 Sharepoint?

问题描述 投票:0回答:1
  1. 我创建了一个逻辑应用程序来触发 HTTP 请求,并在请求中发送一个 pdf 文件到 multipart/form-data 中,其中文件内容是 application/octet-stream 指定的二进制形式。下面是我用来发送 HTTP 请求的实际 Python 代码。
        file_name = os.path.basename(file_path)
        with open(file_path, 'rb') as file:
            file_content = file.read()

        files = {
            'file_content': (file_name, file_content, 'application/octet-stream')
        }

        response = requests.post(logic_app_url, files=files)
  1. 在逻辑应用程序中,HTTP 请求被触发并按预期接收数据(我可以看到)。触发后,我使用 Sharepoint 连接器和“创建文件”操作来创建文件。为了从 HTTP 请求获取 PDF 文件的内容,我使用以下表达式
base64ToBinary(triggerBody()?['$multipart']?[0]?['body']?['$content'])
  1. 文件已创建到 Sharepoint,但创建的 PDF 文件中的数据已损坏。
  • PDF 打开,但它是空白的。
  • 当我检查创建的 PDF 文件时,与原始 PDF 文件相比,某些字符不正确。

附加信息:

这是来自 HTTP 触发器的正文的原始输出(在 Sharepoint 连接器之前)

    "body": {
        "$content-type": "multipart/form-data; boundary=17d2fbd65b268c5f0383c18eaeafbfea",
        "$content": "LS0xN2QyZmJkNjViMjY4YzVmMDM4M2MxOGVhZWFmYmZlYQ0KQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSJmaWxlX2NvbnRlbnQiOyBmaWx.....YzE4ZWFlYWZiZmVhLS0NCg==",
        "$multipart": [
            {
                "headers": {
                    "Content-Disposition": "form-data; name=\"file_content\"; filename=\"original_pdf.pdf\"",
                    "Content-Type": "application/octet-stream"
                },
                "body": {
                    "$content-type": "application/octet-stream",
                    "$content": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1BhZ2VzIDIgMCBSIC9UeXBlIC9DYXRhbG9nID4......CnN0YXJ0eHJlZgoxNTkyMgolJUVPRgo="
                }
            }
        ]
    }

文件内容正确地进行了base64编码(上面仅给出了部分内容)。如果我从文件创建 base64 编码字符串并将其保存在我的 Python 函数中到本地文件中,并与 Azure 逻辑应用程序接收到的内容进行比较,我会得到完全相同的内容。

任何想法都会有帮助。

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

这里不需要转换成二进制:

base64ToBinary(triggerBody()?['$multipart']?[0]?['body']?['$content'])

Design
这对我有用:

enter image description here

当您创建了一个功能应用程序,它也与存储帐户互连时,我建议您先将文件发送到存储帐户,然后再获取它。并且无需将其转换为二进制。

我的 pdf 内容看起来和你的一样,我只是按原样使用它并且它有效:

enter image description here

Output:

enter image description here

文件已在共享点中创建:

enter image description here

离子逻辑应用程序工作流程没有任何问题,您只需使用其内容,而不是转换它。

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