У меня проблема с cURL. Я загружаю изображения и сохраняю их в папку. Файл cURL создает правильный размер файла, что заставляет меня думать, что заголовки читаются правильно. Но когда я открываю файл в своем браузере или в любом приложении для просмотра изображений, на самом деле написано, что на самом деле написано немного. Мой код:
function _vancore_curl_savefile($url) { $url = str_replace("\"", "", $url); $basename = basename($url); $basename = str_replace("%20", "_", $basename); $var = file_directory_path() . "/van/" . $basename; $uvar = "files/van/" . $basename; $handle = fopen($var, "w"); $curl = curl_init($url); curl_setopt($curl, CURLOPT_FILE, $handle); $result = curl_exec($curl); $result2 = $result; curl_close($curl); fclose($handle); return $uvar; }
file_directory_path()
– это функция Drupal (эта функция является частью модуля Drupal и вызывается для каждого файла, который необходимо загрузить), который возвращает путь к каталогу загрузки файлов Drupal. Я подтвердил с помощью различных тестов, что:
a) $url
– это то, что должно быть
б) fopen()
открывает правый файл
c) curl_exec()
возвращает true
после его выполнения
Я очень смущен тем, что здесь происходит не так. У кого-нибудь есть мысли?
ТИА,
Бенджи
Вы не используете библиотеку ловушек «эмуляция» в модуле Curl Drupal. Ты? Это не всегда работает. Убедитесь, что у вас установлена настоящая библиотека curl PHP.
Задавать:
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
Попробуйте, если это поможет:
curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 60);
Может быть, вам не хватает curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
(наряду с CURLOPT_RETURNTRANSFER
, как сказано выше)
Вот пример.