Загрузка изображений с некоторого сервера

Рейтинг: 0Ответов: 0Опубликовано: 10.01.2015

Мне приказано было сделать парсинг yml файлов, да так, чтобы изображения грузились на imgur (хостинг изображений).

Что есть сейчас:

// начало функции
$handle = fopen($filename, "r");
$data = fread($handle, curl_get_file_size($filename));
$data = str_replace(['+', '/', '='], ['%2B', '%2F', '%3D'], $data);
$pvars = array('image' => base64_encode($data));
$timeout = 30;
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id));
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);

$out = curl_exec($curl);
curl_close($curl);
// отдаем url

Вот функция получения размера файла:

function curl_get_file_size ($url) {
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);

$data = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

curl_close($ch);

return $size;
 }

Некоторые изображения небольшого размера грузятся, а побольше нет, выдает ошибку, что файл некорректен. Причем в демо я загружаю такое большое изображение, и все грузится нормально. В чем дело? В определении размера файла, base64 декодировании или в чем? Спасибо за помощь.

Ответы

Ответов пока нет.