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

如何用PHP从HTML表单传图片至服务器/API?视觉API调用报错求助

问题排查与解决方法

Hey,咱们一步一步来搞定这个问题!你遇到的NotSupportedVisualFeature错误,核心原因其实很明确——请求URL里的视觉特征参数编码出问题了。

错误根源分析

看你代码里的请求URL:

https://microsoft-azure-microsoft-computer-vision-v1.p.rapidapi.com/analyze?visualfeatures=Categories%252CTags%252CColor%252CFaces%252CDescription

这里的%252C是逗号(,)被双重URL编码后的结果:正常情况下,逗号的URL编码是%2C,但你这里把%又额外编码成了%25,导致API完全识别不了你指定的视觉特征类型,所以才会抛出“特征类型无效”的错误。

解决步骤

  1. 修正URL的参数编码
    把URL里的%252C替换成普通逗号(,)或者单次编码的%2C,两种格式API都能正确解析。比如修改后的URL可以是:
https://microsoft-azure-microsoft-computer-vision-v1.p.rapidapi.com/analyze?visualfeatures=Categories,Tags,Color,Faces,Description
  1. 规范文件字段名(可选但建议)
    根据Microsoft Computer Vision API的要求,上传本地图片时,表单字段名应该是image而不是你用的myimage。虽然这不是当前报错的直接原因,但为了避免后续潜在问题,建议调整这部分代码:
    把
$data = array('myimage' => $cfile);

改成

$data = array('image' => $cfile);

修正后的完整代码

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" enctype="multipart/form-data">
    <input type="file" name="image" required>
    <input type="submit" name="submit">
</form>

<?php
if(isset($_POST['submit'])){
    $curl = curl_init();
    $cfile = new CURLFile($_FILES['image']['tmp_name'], $_FILES['image']['type'], $_FILES['image']['name']);
    $data = array('image' => $cfile);

    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://microsoft-azure-microsoft-computer-vision-v1.p.rapidapi.com/analyze?visualfeatures=Categories,Tags,Color,Faces,Description",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 300,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $data,
        CURLOPT_HTTPHEADER => array(
            "content-type: multipart/form-data",
            "x-rapidapi-host: microsoft-azure-microsoft-computer-vision-v1.p.rapidapi.com",
            "x-rapidapi-key: b57a0cbabamshcc6da139552c381p1c550ajsn17605aa32e55"
        ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
        echo "cURL Error #:" . $err;
    } else {
        echo $response;
    }
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:17:44