API Яндекс.Диск (PHP) #4: Публикация и удаление файлов — PROG-TIME

API Яндекс.Диск (PHP) #4: Публикация и удаление файлов

18.04.2023
Содержание:

В новом уроке мы с вами рассмотрим запросы для копирования, перемещения и удаления файлов с помощью PHP + Curl в облаке API Яндекс.Диск.

Удаление файла в Яндекс.Диске с помощью API

Начнём с создания метода для удаления файлов. Для удаления файла нужно отправить запрос на https://cloud-api.yandex.net/v1/disk/resources/ с указанием параметра текущего пути до файла и типа удаления (безвозвратное удаление или перемещение в корзину).

/**
 * Удаление ресурса с Яндекс.Диск
 *
 * @param  array $arrParams
 * @return array
 */
public function disk_resources_delete(array $arrParams): array
{
    $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/';
    return $this->sendQueryYaDisk($urlQuery, $arrParams, 'DELETE');
}

Публикация файла или папки в Яндекс.Диске с помощью API

Файлы и папки на Яндекс.Диске можно публиковать. При публикации генерируется ссылка, по которым они будут доступны не только владельцу. Доступ к уже опубликованному ресурсу можно закрыть.

Опубликованный ресурс получает два новых атрибута:

  • public_key — ключ опубликованного ресурса. По этому ключу другие приложения смогут получить метаданные опубликованного ресурса.
  • public_url — публичная ссылка на ресурс вида https://yadi.sk/.... Пользователи, которым владелец ресурса передаст эту ссылку, смогут открыть опубликованную папку или скачать файл.

Так как метод для публикации и отмены публикации принимает одинаковые параметры и имеет похожую структуру, я решил объединить эти два метода в один.

/**
 * Публикация ресурса на Яндекс.Диске
 *
 * @param  array $arrParams

 * @param string $statusPublic
 * @return array
 */
public function disk_resources_publish(array $arrParams, string $statusPublic = true): array
{
    $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/' . ($statusPublic) ? 'publish' : 'unpublish';
    return $this->sendQueryYaDisk($urlQuery, $arrParams, 'PUT');
}

Получение списка публичных файлов на Яндекс.Диске

Отправив запрос на Яндекс.Диск вы так же можете получить список опубликованных файлов. Для получения списка публичных файлов необходимо отправить GET запрос на https://cloud-api.yandex.net/v1/disk/resources/public

limitКоличество опубликованных файлов, описание которых следует вернуть в ответе (например, для постраничного вывода).
Значение по умолчанию — 20.
offsetКоличество ресурсов с начала списка, которые следует опустить в ответе (например, для постраничного вывода).
Допустим, на Диске три опубликованных файла. Если запросить их список с параметром offset=1, API Диска вернет только описания второго и третьего файлов.
typeТип ресурса. Допустимые значения:
"dir" — папка;
"file" — файл.
fieldsСписок свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений.
Имена ключей следует указывать через запятую, а вложенные ключи разделять точками. Например: name,_embedded.items.path.
preview_sizeТребуемый размер уменьшенного изображения (превью файла), ссылку на которое Диск должен вернуть в ключе preview.
Вы можете задать как точный размер превью, так и размер одной из сторон. Получившееся изображение можно обрезать до квадрата с помощью параметра preview_crop.

Варианты значений:
Предопределенный размер большей стороны.
Картинка уменьшается до указанного размера по большей стороне, пропорции исходного изображения сохраняются. Например, для размера S и картинки размером 120×200 будет сгенерировано превью размером 90×150, а для картинки 300×100 — превью размером 150×50.

Поддерживаемые значения:
"S" — 150 пикселей;
"M" — 300 пикселей;
"L" — 500 пикселей;
"XL" — 800 пикселей;
"XXL" — 1024 пикселей;
"XXXL" — 1280 пикселей.

Точная ширина (например, "120" или "120x") или точная высота (например, "x145").
Картинка уменьшается до указанной ширины или высоты, пропорции исходного изображения сохраняются.
Если передан параметр preview_crop, из центра уменьшенного изображения также вырезается квадрат с заданной стороной.

Точный размер (в формате <ширина>x<высота>, например "120x240").
Картинка уменьшается до меньшего из указанных размеров, пропорции исходного изображения сохраняются.
Если передан параметр preview_crop, из центра оригинального изображения вырезается фрагмент максимального размера в заданных пропорциях ширины и высоты (в примере — один к двум). Затем вырезанный фрагмент масштабируется до указанных размеров.

В моё случае я так же использую для этого отдельный метод и он будет выглядеть так

/**
 * Получение списка публичных файлов с Яндекс.Диска
 *
 * @param  array $arrParams
 * @return array
 */
public function disk_resources_public(array $arrParams): array
{
    $urlQuery = 'https://cloud-api.yandex.net/v1/disk/resources/public';
    return $this->sendQueryYaDisk($urlQuery, $arrParams);
}

Подведём итоги. В новом уроке мы с вами научились публиковать файлы находящиеся на Яндекс.Диске. В следующем уроке мы рассмотрим методы для работы с корзиной.

На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime
Наши планы
  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube

Материалы курса

Контакты для связи

Технология на prog-time
Telegram
https://t.me/prog_time_bot