我有Azure IoT中心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中心Python的默认发送默认应用程序/八位字节流的限制
任何指针将不胜感激
答案 0 :(得分:0)
不幸的是,似乎 Python SDK 调用了不支持设置内容类型的IoTHubClient_UploadToBlobAsync方法。
您可以使用服务器端触发的专用组件(例如 Azure功能)将 Azure Blob 的内容类型更改为正确的内容类型(请参见{{ 3}}和BlockBlobService class)。
希望有帮助!
答案 1 :(得分:0)
IoTHubClient_UploadToBlobAsync 方法的另一种替代方法是使用REST API调用。以下步骤显示了此顺序:
请注意,第2步可以处理上传过程的全部要求,例如元数据,属性,内容等。