Задать вопрос

Как через PHP можно скачать файл с YandexDisk?

Каким способом я могу скачать файл с Яндекс. Диска имея прямую ссылку на него?
Пример ссылки: https://disk.yandex.ru/d/X2H8NijOtWahmQ

Каким способом я могу скачать данные файлы средствами PHP? Смотрел на разные библиотеки для работы с YaDisk, но они для работы "со своим" диском, а не для скачивания чужих публичных файлов.
  • Вопрос задан
  • 679 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
@alexalexes
Через curl.
Вот API для работы с опубликованными ресурсами Я-диска.
https://yandex.ru/dev/disk/api/reference/public.html
Ответ написан
Acrilo
@Acrilo Автор вопроса
Никакие сторонние библиотеки и не понадобились.

Простой код для скачивания архива с сервера YaDisk по ссылке:

<?php
 $base_url = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?';

/**
 * Ссылка на файл YaDisk
 */
$link = 'https://disk.yandex.ru/d/X2H8NijOtWahmQ';


/**
 * Формирование API ссылки
 */
$final_url = $base_url . 'public_key=' . $link;


/**
 * Получение данных ответа
 */
$ch = curl_init($final_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);

$http_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);

/**
 * Проверка HTTP кода
 */
if ($http_code === 200) {
    $json = json_decode(file_get_contents($final_url));
    $linkFile = $json->href;

    /**
     * Путь куда сохранять файл
     */
    $path = \Core\Services\Path\Path::public('tmp') . '/ar.zip';
    file_put_contents($path, file_get_contents($linkFile));

} else {
    throw new RuntimeException('Ошибка 404. Страница файла указана неверно.');
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы