将文件从设备上传到云

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

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

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

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