недавно встала задача, сохранения и вывода изображений с яндекс диска на сайте.
С сохранением изображений на диск справился используя https://github.com/DEN007/Yandex.Disk-FULL-API этот класс.
Но вот с получением файлов возникают проблемы.
описываю по порядку что я делал и какой результат получал.
1. пытался вывести файлы используя метод get() того же класса
ls($path) - метод вывода всех файлов из указанного url $path
get($url, $buffer) получение файла
// $value['href'] - ссылка на файл
// $value['getcontenttype'] - тип файла
вот код:
//формирую url к папке с файлами
$path = '/'.$config['year'].'/'.$palmer_company.'/'.$id;
// получаю список файлов из папки
$dir = $wdc->ls($path);
foreach ($dir as $value) {
// если тип файла png, то получаем его
if ($value['getcontenttype'] == 'image/png') {
$http_status = $wdc->get($value['href'], $buffer);
print ' статус сервера ' . $http_status["status"] . '. размер файла ' . strlen($buffer). ' байт.<br>';
// кодирую файл, чтобы вставить его в теги img
$buffer = base64_encode($buffer);
echo "<img class='thumb' src='data:{$value['getcontenttype']};base64,{$buffer}'>";
}
}
Результат: возвращает только первую фотографию.
Метод 2. Пытаюсь get запросом получить доступ к файлам как описано тут: http://api.yandex.ru/disk/doc/dg/reference/preview.xml
/**
* делаем GET запос к яндекс фоткам.
* устанавливаем заголовоки, в ней передаем пароль и логин от яндекса в base64
* */
$login = "login"; //можно и без @yandex.ru
$password = "password";
$headers = array("Authorization: Basic " . base64_encode($login . ":" . $password)); //формируем заголовки для успешной авторизации
$ch = curl_init ();
curl_setopt ($ch , CURLOPT_URL , 'https://webdav.yandex.ru/3.png?preview&size=250x');
curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch , CURLOPT_HEADER , 0);
curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt ($ch , CURLOPT_BINARYTRANSFER , 1);
$content = curl_exec($ch);
curl_close($ch);
Результат: bad authorization!
Подскажите пожалуйста, что я не так делаю? и куда копать?