Какова версия php curl приведенной ниже команды curl

#php #curl #php-curl

#php #curl #php-curl

Вопрос:

Какой была бы версия php curl приведенной ниже команды

 curl -X PUT -H 'Content-Type: text/csv' -H 'Accept: application/json' -d @file.csv [URL]
  

У меня есть приведенная ниже версия php curl, которая не работает

 $headers = [
   'Content-Type: text/csv',
   'Accept: application/json'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($filename));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
  

Комментарии:

1. Как это «не работает» ?

Ответ №1:

Попробуйте приведенный ниже код

 $headers = [
   'Content-Type: text/csv',
   'Accept: application/json'
];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, ''.$url'');
curl_setopt($ch, CURLOPT_PUT, 1);

$fp = fopen($file_path, 'r');

curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file_path));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response= curl_exec ($ch);
fclose($fp);

  

Комментарии:

1. fopen следует использовать rb not r , и у вас синтаксическая ошибка в строке 8, но в остальном все выглядит хорошо 🙂 (ну, строго говоря, вы должны добавить echo $response в последней строке, потому что это то, что делает curl, но это просто придирки)

Ответ №2:

Существует инструмент для преобразования команды cURL в PHP-версию cURL. Вы можете попробовать этот веб-сайт: curl-toPHP.

Это пример вывода с использованием вашей команды cURL.

 $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'your-post-remote');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$post = array(
    'file' => '@' .realpath('file.csv')
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');


$headers = array();
$headers[] = 'Content-Type: text/csv';
$headers[] = 'Accept: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
  

Комментарии:

1. метод @ upload не рекомендуется использовать с PHP 5.5, отключен по умолчанию в PHP 5.6 и ПОЛНОСТЬЮ УДАЛЕН с PHP 7.0, не используйте метод @, используйте CURLFile.