簡體   English   中英

在PHP中運行curl

[英]Run curl inside php

我想在PHP執行Curl代碼。

curl -X POST 'https://api.sightengine.com/1.0/check.json' \
     -F 'api_user=1********5' \
     -F 'api_secret=q**************Q' \
     -F 'media=@/full/path/to/image.jpg' \
     -F 'models=nudity'   

上面的代碼有四個參數傳遞給api。 下面我嘗試執行的PHP代碼:

function image()
{
    $body_data = http_build_query(array('api_user' => 1********5,
                       'api_secret' => 'q**************Q',
                       'media' => $_FILES['image']['name'],
                       'models' => 'nudity'));

    // Configure cURL
    $image_curl = curl_init();
    curl_setopt($image_curl, CURLOPT_URL, "https://api.sightengine.com/1.0/check.json");
    curl_setopt($image_curl, CURLOPT_POST, true); // Use POST
    curl_setopt($image_curl, CURLOPT_POSTFIELDS, $body_data); // Setup post body
    curl_setopt($image_curl, CURLOPT_RETURNTRANSFER, true); // Receive server response

    // Execute request and read responce
    $session_response = curl_exec($image_curl);
    $response = json_decode($session_response);

    print_r($response);
}   

響應:

stdClass對象([狀態] =>失敗[請求] => stdClass對象([id] => req_2365jHPuLcC6Bydh7WNd7 [時間戳] => 1512542730.57 [操作] => 0)[錯誤] => stdClass對象([類型] =>參數錯誤[代碼] => 4 [消息] =>未指定任何介質))

現在問題出在mediamodels參數上。

  1. 我不確定media參數的文件路徑是否存在問題。 我是否要在路徑前面添加一個@

  2. 我在$body_data數組中定義了所有參數,並將它們正確傳遞給CURLOPT_URL

請幫我解決這個問題。 當我在POSTMAN嘗試此POSTMAN ,效果很好。 提前致謝。

您不需要使用http_build_query

支持PHP 5.5、5.6等通過@符號,但在PHP 7中已棄用。現在我們可以使用https://secure.php.net/manual/en/class.curlfile.php

$body_data = array(
    'api_user' => '3454',
    'api_secret' => 'q**************Q',
    'models' => 'nudity'
);

$body_data['media'] = new CurlFile(realpath('file.jpg'));

// Configure cURL
$image_curl = curl_init();
curl_setopt($image_curl, CURLOPT_URL, "https://api.sightengine.com/1.0/check.json");
curl_setopt($image_curl, CURLOPT_POST, true); // Use POST
curl_setopt($image_curl, CURLOPT_POSTFIELDS, $body_data); // Setup post body
curl_setopt($image_curl, CURLOPT_RETURNTRANSFER, true); // Receive server response

// Execute request and read responce
$session_response = curl_exec($image_curl);
$response = json_decode($session_response);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM