В новом уроке мы рассмотрим как создавать директории, добавлять файлы и скачивать файлы через API Яндекс.Диск. Так же мы рассмотрим процесс отправки PUT запросов.
Полный список всех записей курса находится на сайте https://prog-time.ru/course_cat/yandeks-disk-api-php/ или в публикациях на Хабр https://habr.com/ru/users/Prog-Time/posts/
Создание директорий на Яндекс.Диск через API
Для создания директорий мы будем отправлять запросы по уже известному нам пути.
https://cloud-api.yandex.net/v1/disk/resources/
Только в данном случае нам нужно отправлять запросы методом PUT.
Мы в предыдущих уроках подготовили наш метод sendQueryYaDisk() под отправку PUT запросов, поэтому просто передадим ему в качестве третьего параметра строку ‘PUT’.
/** * Метод для создания директории * * @param array $arrParams параметры для отправки запроса * * @return array */ public function disk_resources_create_dir(array $arrParams): array { $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/'; return $this->sendQueryYaDisk($urlQuery, $arrParams, 'PUT'); }
Загрузка файлов на Яндекс.Диск через API
Загрузка файлов производится с помощью двух запросов:
-
запрос на получение ссылки для загрузки
-
отправка файлов по полученному URL из предыдущего запроса
Я объединил эти два запроса в один метод.
Метод будет принимать 2 параметра:
-
$filePath — путь до файла на вашем сервере
-
$dirPath — путь до директории на Яндекс.Диск куда нужно загрузить файл
/** * Метод для загрузки файлов * * @param string $filePath путь до файла * @param string $dirPath путь до директории на Яндекс.Диск * * @return string */ public function disk_resources_upload(string $filePath, string $dirPath = ''): string { /* отправляем запрос на получение ссылки для загрузки */ $arrParams = [ 'path' => $dirPath . basename($filePath), 'overwrite' => 'true', ]; $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/upload'; $resultQuery = $this->sendQueryYaDisk($urlQuery, $arrParams); /* ----------------- */ if (empty($resultQuery['error'])) { /* Если ошибки нет, то отправляем файл на полученный URL. */ $fp = fopen($filePath, 'r'); $ch = curl_init($resultQuery['href']); curl_setopt($ch, CURLOPT_PUT, true); curl_setopt($ch, CURLOPT_UPLOAD, true); curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filePath)); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $http_code; } else { return $resultQuery['message']; } }
Скачивание файла с Яндекс.Диска через API
Скачивание файлов происходит так же с помощью двух запросов:
-
запрос для получения разрешения на скачивание
-
запрос для загрузки файла на сервер
Метод для загрузки будет принимать 2 параметра, только в этот раз первый параметр будет принимать путь до файла в Яндекс.Диске, а второй параметр будет указывать директорию в которую этот файл нужно загрузить.
/** * Метод для скачивания файлов на сервера * * @param string $filePath путь до файла в Яндекс.Диске * @param string $dirPath путь до директории на сервере * * @return array */ public function disk_resources_download(string $filePath, string $dirPath = ''): array { /* отправляем запрос на получение ссылки для скачивания */ $arrParams = [ 'path' => $filePath, ]; $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/download'; $resultQuery = $this->sendQueryYaDisk($urlQuery, $arrParams); /* ----------------- */ if(empty($resultQuery['error'])) { $file_name = $dirPath . basename($filePath); $file = @fopen($file_name, 'w'); $ch = curl_init($resultQuery['href']); curl_setopt($ch, CURLOPT_FILE, $file); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $this->token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $resultQuery = curl_exec($ch); curl_close($ch); fclose($file); return [ 'message' => 'Файл успешно загружен', 'path' => $file_name, ]; } else { return $resultQuery; } }
Таким образом в новом уроке мы с вами научились:
-
загружать файлы с сервера на Яндекс.Диск через API
-
скачивать файлы с Яндекс.Диска на сервер через API
-
создавать директории на Яндекс.Диске через API
В следующем уроке я вам покажу как публиковать и убирать с публикации файлы загруженные через API.
ссылка на оригинал статьи https://habr.com/ru/articles/749168/
Добавить комментарий