Подскажите, как можно с ЯД получить ссылки на изображения, которые реально можно использовать для вывода изображений на страницах сайта ().
Пробовал через библиотеку
use Yandex\Disk\DiskClient;
//
$diskClient = new DiskClient(ACCESS_TOKEN);
$diskClient->setServiceScheme(DiskClient::HTTPS_SCHEME);
// Получаем имена файлов в каталоге
$dirContent = $diskClient->directoryContents('/Новая папка/');
$img_names = array(); // массив с именами файлов
foreach ($dirContent as $dirItem) {
if ($dirItem['resourceType'] != 'dir') {
array_push($img_names, $dirItem['displayName']);
}
}
$img_priviews = array();
foreach($img_names as $img) {
// Файл для которого создается превью
$target = '/Новая папка/'.$img;
//Сохранение превьюшки
$size = 'XXXS';
$file = $diskClient->getImagePreview($target, $size);
file_put_contents('previews/'.$img, $file['body']);
//Вывод превьюшки
$size = '1000x';
$file = $diskClient->getImagePreview($target, $size);
header('Content-Description: File Transfer');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Date: ' . $file['headers']['date']);
header('Content-Type: '.$file['headers']['content-type']);
header('Content-Length: ' . $file['headers']['content-length']);
header('Accept-Ranges: ' . $file['headers']['accept-ranges']);
// array_push($img_priviews, $file['body']);
}
// Вывод изображений
foreach($img_priviews as $imgs) {
echo $imgs;
}
Выводит только одну картинку, а в указанную папку на сервере загружает изображения размером 50х50.
Знаю, что можно еще cURL использовать для этих целей, но под данную задачу пока не разобрался как.
P.S.: ЯД для требуется использовать, для освобождения места на сервере (фотографий достаточно много)
Удалось решить следующим образом:
use Yandex\Disk\DiskClient;
//
$diskClient = new DiskClient(ACCESS_TOKEN);
$diskClient->setServiceScheme(DiskClient::HTTPS_SCHEME);
// Получаем имена файлов в каталоге
$dirContent = $diskClient->directoryContents('/Новая папка/');
$img_names = array(); // массив с именами файлов
foreach ($dirContent as $dirItem) {
if ($dirItem['resourceType'] != 'dir') {
array_push($img_names, $dirItem['displayName']);
}
}
$img_priviews = array();
foreach($img_names as $img) {
$headers = array("Authorization: ".ACCESS_TOKEN);
$curl = curl_init('https://cloud-api.yandex.net/v1/disk/resources?path=disk:/Новая папка/'.$img.'&preview_size=300x300');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$info = curl_exec($curl);
$response = json_decode($info);
array_push($img_priviews, $response->preview);
}
foreach($img_priviews as $imgs) {
echo '<img src="'.$imgs.'" alt="">';
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники