Подскажите, как можно с ЯД получить ссылки на изображения, которые реально можно использовать для вывода изображений на страницах сайта ().
Пробовал через библиотеку
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="">';
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Значение, которое извлечет PHP из строки '/\\o/' и будет использовано PCRE как патерн, будет равно \oПоскольку 'o' не является управляющим символом,...
Создаю пакет для LaravelЕсть сервис-провайдер CartServiceProvider, который лежит в пространстве имен Alexxosipov\Cart
Здравствуйте, планирую сделать на сайте пользовательский чатТо есть не общий чат, а между конкретными пользователями, два человека