Да, это выглядит неработающим, первые несколько байтов изменены, возможно, больше ( marvin3.jpg - исходное изображение в хранилище больших двоичных объектов).
В качестве обходного пути просто добавьте это к входной привязке BLOB-объекта function.json
:
"dataType": "binary"
, как в :
{
"name": "inputBlob",
"type": "blob",
"dataType": "binary",
"direction": "in",
"path": "images/input_image.jpg",
"connection": "AzureWebJobsStorage"
}
Вам не нужно указывать это в (это необходимо только для JavaScript работника), но я думаю, что где-то в SDK есть ошибка, которая не позволяет выводимый тип.
Полный рабочий пример:
def main(req: func.HttpRequest, inputBlob: func.InputStream) -> func.HttpResponse:
blob = inputBlob.read()
with open("out.jpg", "wb") as outfile:
outfile.write(blob)
return func.HttpResponse(
"Done. Binary data written to out.jpg",
status_code=200
)
Это сквозное испытание, которое они проводят в Python рабочий репозиторий также предполагает наличие "dataType": "binary"
при использовании привязок ввода BLOB-объектов (независимо от типа файла, который вы должны получить в байтах).
Если вы пытаетесь разыграть входной BLOB-объект как inputBlob: bytes
вместо inputBlob: func.InputStream
, проблема становится более очевидной, если вы не указали dataType
:
Exception: TypeError: a bytes-like object is required, not 'str'
Рабочий Python возвращает вам строку inste объявление байтов.
У меня открыта проблема здесь для обновления документов.