#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
notr
, и у вас синтаксическая ошибка в строке 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.