You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Azure Logic App上传图片至Azure Custom Vision时遇400错误

解决Azure Logic App向Custom Vision上传图片的400错误

根据你提供的BadRequestImageStream(流为空)错误信息,结合Postman可正常运行的情况,问题集中在API端点格式错误、请求体传递方式不当以及冗余请求头干扰几个方面,以下是具体修复步骤:

1. 修正API端点URI的格式错误

你的请求URI存在两处关键问题:

  • 缺少Custom Vision预测资源的完整域名:cognitiveservices.后需补充区域后缀(如.azure.com)
  • Prediction后缺失项目ID,且多了一个无效斜杠:正确格式应为/Prediction/{你的项目ID}/detect/...

修正后的URI示例:

https://anonymized-prediction.cognitiveservices.azure.com/customvision/v3.0/Prediction/xxxxxxxxx/detect/iterations/Iteration1/image

2. 调整请求体的传递方式

当前请求体使用了Logic App的Base64包装格式($content-type+$content),但请求头指定的是application/octet-stream,这会导致Custom Vision无法正确解析流。如果是从Blob Storage获取图片,直接将Blob的二进制内容作为请求体即可:

  • 在Logic App的HTTP动作中,将Body设置为@body('Get_Blob_Content')(假设你使用了"Get Blob Content"动作获取Blob)
  • 无需手动转换Base64,也不需要$content-type和$content的包装结构

3. 清理冗余请求头

移除不必要的请求头,只保留Custom Vision需要的核心头:

"headers": {
    "Content-Type": "application/octet-stream",
    "Prediction-Key": "你的预测密钥"
}

Accept-Encoding、Connection等头在Logic App中会自动处理,手动添加可能导致流压缩或传输异常,引发空流错误。

4. 验证请求体完整性

在HTTP动作前添加条件检查,确认Blob内容不为空:

  • 新增"Condition"动作,判断length(body('Get_Blob_Content')) > 0
  • 仅当条件成立时才执行Custom Vision的HTTP请求,避免传递空流

修正后的请求示例

{
    "uri": "https://anonymized-prediction.cognitiveservices.azure.com/customvision/v3.0/Prediction/你的项目ID/detect/iterations/Iteration1/image",
    "method": "POST",
    "headers": {
        "Content-Type": "application/octet-stream",
        "Prediction-Key": "你的预测密钥"
    },
    "body": "@body('Get_Blob_Content')"
}

内容的提问来源于stack exchange,提问作者Fagborg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:23:14