У меня возникла проблема с написанием функции Azure, которая принимает входные данные большого двоичного объекта (JSON) и создает файл, используя столбец contentbyte из файла JSON.
Шаблон JSON:
Код: Выделить всё
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users('XXX.com')/messages('AQMkADAA3D%3D')/attachments",
"value":[
{
"@odata.type":"#microsoft.graph.fileAttachment",
"@odata.mediaContentType":"application/pdf",
"id":"AQMkADA0NjA5YT",
"lastModifiedDateTime":"2023-06-29T14:40:33Z",
"name":"MISC.pdf",
"contentType":"application/pdf",
"size":314000,
"isInline":false,
"contentId":"5E2D20ED5265174C8C9DC1AD59FFA4outlook.com",
"contentLocation":null,
"contentBytes":"JVBERi0xLjYNCiWAgYKDDQoxIDAgb2JqDQo8PCAvQ3JlYXRvciA8Pg0KL0NyZWF0aW9uRGF0ZSA8NDQzYTM[enter image description here](https://i.stack.imgur.com/WQJSz.png)y"
}
]
}
введите здесь описание изображения
Ниже приведена написанная мной функция Azure:
р>
Код: Выделить всё
import json
import base64
from base64 import *
import logging
import azure.functions as func
def main(req: func.HttpRequest,inputBlob: func.InputStream, outputBlob: func.Out[bytes]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
try:
with open(inputBlob.read(),encoding='utf-8-sig') as user_file:
file_contents = user_file.read()
contents = json.loads(file_contents)
for file_contents in enumerate(contents.get("value")):
outputBlob.set(base64.b64decode(content.get("contentBytes")))
output = {"run":"success"}
return json.dumps(output)
except Exception as ex:
logging.exception(ex)
output = {"run":"failure"}
return json.dumps(output)
Код: Выделить всё
[Error] [Errno 36] File name too long: b'{\r\n "@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users(\'fsdja@eadft.com\')/messages(\'AQMkADA0NjA5YTMyLWU4MDctNDZkMi04
Источник: https://stackoverflow.com/questions/781 ... h-api-emai