Как отправить изображение в виде строки из html формы в php на сервер или как запрос к API - PullRequest
0 голосов
/ 09 мая 2020

Я пытался создать простое веб-приложение, которое будет анализировать изображение с помощью API компьютерного зрения Microsoft. Мне не удалось получить правильный вывод в приложении, но оно отлично работает на тестовых конечных точках (API выбран из rapidapi.com).

Вот код:

    <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('myimage' => $cfile);
            curl_setopt_array($curl, array(
                CURLOPT_URL => "https://microsoft-azure-microsoft-computer-vision-v1.p.rapidapi.com/analyze?visualfeatures=Categories%252CTags%252CColor%252CFaces%252CDescription",
                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;
            }
        }
    ?>

И вывод это: {"code":"NotSupportedVisualFeature","requestId":"0b1ed1a6-afff-43e2-ae50-820d74c9b8fd","message":"Specified feature type is not valid"}

1 Ответ

0 голосов
/ 09 мая 2020

Похоже, вы закодировали параметр запроса. Вы можете попробовать это?

    <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('myimage' => $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;
            }
        }
    ?>
...