Я использую CURL для публикации данных на PHP следующим образом:
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
где $ args – массив параметров.
Проблема в том, что один из параметров имеет значение, начинающееся с «@». И согласно документации CURL, это означает, что я собираюсь отправить файл. Это не так в моем случае. В результате я получаю следующее сообщение об ошибке: не удалось создать данные formpost.
Есть ли способ указать, когда я хочу отправить файл, или «@» – это обычный символ, который является частью некоторого значения?
Спасибо, Гена
Вместо этого вы можете использовать процентное кодирование? Таким образом, ваши символы «@» будут% 40, и CURL не будет с ними связываться. Обычно мы кодируем все поля для заполнения.
Начиная с PHP 5.5, вы можете установить параметр CURLOPT_SAFE_UPLOAD, чтобы предотвратить поведение загрузки файлов для строк, начинающихся с «@». Например.
$ch = curl_init($url); curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
Значение по умолчанию для PHP 5.5.0 неверно, и значение true начинается с 5.6.0