你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将文件从设备上传到云

借助 IoT Central,可以将媒体和其他文件从联网的设备上传到云存储。 可以在 IoT Central 应用程序中配置文件上传功能,然后在设备代码中实现文件上传。

可以选择在 IoT Central 应用程序中管理和预览设备上传的文件。

若要了解如何使用 IoT Central REST API 来配置文件上传,请参阅添加文件上传存储帐户配置

先决条件

你必须是 IoT Central 应用程序中的管理员,才能配置文件上传。

需要一个 Azure 存储帐户和容器来存储上传的文件。 如果没有可用的现有存储帐户和容器,请在 Azure 门户中创建一个新的存储帐户

配置设备文件上传

若要配置设备文件上传,请执行以下操作:

  1. 在应用程序中导航到“应用程序”部分

  2. 选择“设备文件存储”

  3. 选择要使用的存储帐户和容器。 如果存储帐户与应用程序位于不同的 Azure 订阅中,请输入存储帐户连接字符串。

  4. 如有必要,请调整上传超时,以设置上传请求的有效期。 有效值为 1 到 24 小时。

  5. 若要使用户能够在 IoT Central 中查看和管理上传的文件,请将“启用访问权限”设置为“打开”。

  6. 选择“保存”。 当状态显示“已配置”时,便可以从设备上传文件

显示正确配置的文件上传的屏幕截图。

禁用设备文件上传

如果要禁用将设备文件上传到 IoT Central 应用程序,请执行以下操作:

  1. 在应用程序中导航到“应用程序”部分

  2. 选择“设备文件存储”

  3. 选择“删除”。

控制对已上传文件的访问

使用角色和权限来控制谁可以查看和删除上传的文件。 若要了解详细信息,请参阅在 IoT Central 应用程序中管理用户和角色 > 管理设备

从设备上传文件

IoT Central 使用 IoT 中心的文件上传功能来支持设备上传文件。 有关显示如何从设备上传文件的示例代码,请参阅 IoT Central 文件上传设备示例

查看和管理上传的文件

如果启用了对文件上传配置中的文件的访问权限,则具有正确权限的用户可以查看和删除上传的文件。

重要

与设备关联的 Blob 容器文件夹中的所有文件都显示在该设备的“文件”视图中。 这包括设备未上传的任何文件。

若要查看和删除上传的文件,请导航到设备的“文件”视图。 在此页上,可看到已上传文件的缩略图,并可在库视图和列表视图之间进行切换。 每个文件都有下载或删除它的选项:

屏幕截图显示已上传文件的库视图。

提示

文件类型取决于将文件上传到 Blob 存储时分配给文件的 MIME 类型。 默认类型为 binary/octet-stream

自定义列表视图时,可以根据文件名进行筛选,然后选择要显示的列。

若要预览文件的内容并获取有关该文件的详细信息,请选中该文件。 IoT Central 支持文本和图像等常见文件类型的预览:

屏幕截图显示文本文件的预览。

测试文件上传

在 IoT Central 应用程序中配置文件上传后,可以使用示例代码对其进行测试。 如果尚未克隆文件上传示例存储库,请使用以下命令将其克隆到本地计算机上的合适位置并安装相关程序包:

git clone https://github.com/azure-Samples/iot-central-file-upload-device
cd iotc-file-upload-device
npm i
npm build

创建设备模板并导入模型

若要测试文件上传,请运行示例设备应用程序。 为要使用的示例设备创建设备模板。

  1. 在 IoT Central UI 中打开应用程序。

  2. 在左侧窗格中导航到“设备模板”选项卡,选择“+ 新建”

  3. 选择 IoT 设备作为模板类型。

  4. 在向导的“自定义”页上,输入设备模板的名称,例如“文件上传设备示例”

  5. 在“查看”页上,选择“创建” 。

  6. 选择“导入模型”,然后从之前下载的存储库中的文件夹 iotc-file-upload-device\setup 中上传 FileUploadDeviceDcm.json 清单文件。

  7. 选择“发布”以发布设备模板。

添加设备

若要将设备添加到 Azure IoT Central 应用程序:

  1. 在左侧窗格中选择“设备”。

  2. 选择之前创建的“文件上传设备示例”设备模板。

  3. 选择 + “新建”,然后选择“创建”

  4. 选择你创建的设备,然后选择“连接”

复制 ID scopeDevice ID 以及 Primary key 的值。 请在设备示例代码中使用这些值。

运行示例代码

打开在 VS Code 中下载的 Git 存储库。 在项目的根目录中创建一个“.env”文件,并添加之前复制的值。 该文件应类似于以下示例,其中包含之前记下的值。

scopeId=<YOUR_SCOPE_ID>
deviceId=<YOUR_DEVICE_ID>
deviceKey=<YOUR_PRIMARY_KEY>
modelId=dtmi:IoTCentral:IotCentralFileUploadDevice;1

打开在 VS Code 中下载的 Git 存储库。 按 F5 运行/调试示例。 在终端窗口中,可以看到设备已注册并已连接到 IoT Central:

Starting IoT Central device...
 > Machine: Windows_NT, 8 core, freemem=6674mb, totalmem=16157mb
Starting device registration...
DPS registration succeeded
Connecting the device...
IoT Central successfully connected device: 7z1xo26yd8
Sending telemetry: {
    "TELEMETRY_SYSTEM_HEARTBEAT": 1
}
Sending telemetry: {
    "TELEMETRY_SYSTEM_HEARTBEAT": 1
}
Sending telemetry: {
    "TELEMETRY_SYSTEM_HEARTBEAT": 1
}

示例项目附带名为 datafile.json 的示例文件。 在 IoT Central 应用程序中使用“上传文件”命令时,会上传此文件。

若要测试此上传,请打开应用程序,然后选择已创建的设备。 选择“命令”选项卡,可以看到名为“运行”的按钮。 选择该按钮时,IoT Central 应用会在设备上调用直接方法来上传文件。 可以在 /device.ts 文件的示例代码中看到此直接方法。 该方法名为 uploadFileCommand

选择“原始数据”选项卡以验证文件上传状态。

屏幕截图显示了如何验证文件上传的 UI。

还可以进行 REST API 调用,以验证存储容器中的文件上传状态。