Клиент Azure IoT Hub - Как загрузить файлы в формате приложения / json - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть Azure IoT Hub Python. Попытка загрузить файлы с помощью этой процедуры

def iothub_file_upload_sample_run():
try:
    print ( "IoT Hub file upload sample, press Ctrl-C to exit" )
    client = IoTHubClient(CONNECTION_STRING, PROTOCOL)      

    f = open(PATHTOFILE, "r")
    content = f.read()

    client.upload_blob_async(FILENAME, content, len(content), blob_upload_conf_callback)

    print ( "" )
    print ( "File upload initiated..." )

Это работает нормально, но типы файлов имеют тип "application / octet-stream"

Я перешел к некоторым сообщениям и попытался добавить "client.set_options ('auto_url_encode_decode', True)", как показано ниже

def iothub_file_upload_sample_run():
try:
    print ( "IoT Hub file upload sample, press Ctrl-C to exit" )

    client = IoTHubClient(CONNECTION_STRING, PROTOCOL)
    client.set_options('auto_url_encode_decode', True)

    f = open(PATHTOFILE, "r")
    content = f.read()

    client.upload_blob_async(FILENAME, content, len(content), blob_upload_conf_callback)

    print ( "" )
    print ( "File upload initiated..." )


But the response message is 
File:C:\Release\iot-sdks- 
internals\release\python\automation\aziotsdk_pytools\src\c\c- 
utility\adapters\httpapi_winhttp.c Func:HTTPAPI_CloneOption Line:1046 
unknown option auto_url_encode_decode

неизвестный параметр auto_url_encode_decode и протокол HTTP

Не уверен, является ли это ограничением Azure IoT HoPthon для отправки по умолчанию Application / octet-stream

Любые указатели приветствуются

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Другой альтернативой IoTHubClient_UploadToBlobAsync является использование вызовов API REST. Следующие шаги показывают эту последовательность:

  1. POST to Создать файл Загрузить Sas Uri
  2. PUT для загрузки файла BLOB-объекта
  3. POST до Обновить статус загрузки файла

Обратите внимание, что шаг 2. может удовлетворить все требования к процессу загрузки, такие как метаданные, свойства, содержимое и т. Д.

0 голосов
/ 18 ноября 2018

К сожалению, похоже, что Python SDK вызывает метод IoTHubClient_UploadToBlobAsync , который не поддерживает настройку типа контента.

Вы можете использовать выделенную сторону сервераТриггерный компонент (например, Функция Azure ) для изменения типа содержимого Azure Blob на правильный (см. Класс BlockBlobService и Класс ContentSettings).

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...