PHP code example of tigusigalpa / yandex-disk-php
1. Go to this page and download the library: Download tigusigalpa/yandex-disk-php library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tigusigalpa / yandex-disk-php example snippets
use Tigusigalpa\YandexDisk\YandexDiskClient;
$clientId = 'ваш_client_id_из_настроек_приложения';
$authUrl = YandexDiskClient::getAuthorizationUrl($clientId);
echo "Перейдите по ссылке для авторизации:\n";
echo $authUrl;
// Вывод: https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>
use Tigusigalpa\YandexDisk\YandexDiskClient;
$accessToken = 'ваш_oauth_токен';
$client = new YandexDiskClient($accessToken);
// Теперь можно использовать все методы API
$diskInfo = $client->getCapacity();
// Получение информации о диске
$diskInfo = $client->getCapacity();
echo "Использовано: " . $diskInfo['used'] . " байт\n";
echo "Всего: " . $diskInfo['total_space'] . " байт\n";
echo "Свободно: " . ($diskInfo['total_space'] - $diskInfo['used']) . " байт\n";
use Tigusigalpa\YandexDisk\Models\{Resource, DiskInfo};
// Получение информации о диске
$diskData = $client->getCapacity();
$diskInfo = DiskInfo::fromArray($diskData);
echo "Всего: " . $diskInfo->getTotalSpace() . " байт\n";
echo "Использовано: " . $diskInfo->getUsedSpace() . " байт\n";
echo "Свободно: " . $diskInfo->getFreeSpace() . " байт\n";
echo "Использование: " . $diskInfo->getUsagePercentage() . "%\n";
echo "Корзина: " . $diskInfo->getTrashSize() . " байт\n";
echo "Платный: " . ($diskInfo->isPaid() ? 'Да' : 'Нет') . "\n";
// Получение метаданных ресурса
$meta = $client->getMeta('/disk/MyFile.txt');
$resource = Resource::fromArray($meta);
echo "Имя: " . $resource->getName() . "\n";
echo "Тип: " . $resource->getType() . "\n"; // 'file' или 'dir'
echo "Размер: " . $resource->getSize() . " байт\n";
echo "Создан: " . $resource->getCreated() . "\n";
echo "Изменён: " . $resource->getModified() . "\n";
echo "MIME тип: " . $resource->getMimeType() . "\n";
echo "MD5: " . $resource->getMd5() . "\n";
echo "SHA256: " . $resource->getSha256() . "\n";
// Загрузка файла
$result = $client->uploadFile(
'/local/path/file.txt',
'/disk/MyFolder/file.txt',
true // перезаписать существующий файл
);
echo "Статус: " . $result['status'] . "\n"; // 201 для успеха
echo "Успешно: " . ($result['success'] ? 'Да' : 'Нет') . "\n";
// Скачивание файла
$success = $client->downloadFile(
'/disk/MyFile.txt',
'/local/path/downloaded.txt'
);
echo $success ? "Скачивание успешно\n" : "Скачивание не удалось\n";
// Копирование файла
$result = $client->copy(
'/disk/original.txt',
'/disk/copy.txt',
true // перезаписать, если существует
);
echo "Скопировано в: " . $result['path'] . "\n";
// Перемещение файла
$result = $client->move(
'/disk/old-location/file.txt',
'/disk/new-location/file.txt',
true // перезаписать, если существует
);
echo "Перемещено в: " . $result['path'] . "\n";
// Удаление файла
$result = $client->delete(
'/disk/file.txt',
true // окончательное удаление (false = в корзину)
);
echo "Удалено\n";
// Создание папки
$result = $client->createFolder('/disk/MyNewFolder');
echo "Папка создана: " . $result['path'] . "\n";
// Создание вложенной структуры папок
$client->createFolder('/disk/Projects');
$client->createFolder('/disk/Projects/WebDev');
$client->createFolder('/disk/Projects/WebDev/Site1');
// Получение всех файлов на диске
$allFiles = $client->getAllFiles(limit: 100, offset: 0);
echo "Всего файлов: " . $allFiles['total'] . "\n";
foreach ($allFiles['items'] as $file) {
$resource = Resource::fromArray($file);
echo "- " . $resource->getName() . " (" . $resource->getType() . ")\n";
}
// Получение недавно загруженных файлов
$recent = $client->getRecentUploads(limit: 10);
foreach ($recent['items'] as $file) {
$resource = Resource::fromArray($file);
echo "- " . $resource->getName() . "\n";
}
// Список файлов в директории
$dirMeta = $client->getMeta('/disk/MyFolder');
$directory = Resource::fromArray($dirMeta);
if ($directory->isDir()) {
foreach ($directory->getItems() as $item) {
echo "- " . $item->getName() . " (" . $item->getSize() . " байт)\n";
}
echo "Всего элементов: " . $directory->getTotalItems() . "\n";
}
// Добавление пользовательских метаданных
$result = $client->addMeta('/disk/file.txt', [
'description' => 'Моё пользовательское описание',
'author' => 'John Doe',
'version' => '1.0.0'
]);
// Получение метаданных ресурса
$meta = $client->getMeta('/disk/file.txt');
$resource = ResourceResponse::fromArray($meta);
// Доступ к пользовательским свойствам
$customProps = $resource->toArray()['custom_properties'] ?? [];
// Сделать файл публичным
$result = $client->publish('/disk/document.pdf');
echo "Публичный URL: " . $result['public_url'] . "\n";
// Вывод: https://yadi.sk/d/abc123...
// Получение недавно опубликованных файлов
$published = $client->getRecentPublished(limit: 10);
foreach ($published['items'] as $file) {
$resource = Resource::fromArray($file);
if ($resource->isPublished()) {
echo "- " . $resource->getName() . "\n";
echo " URL: " . $resource->getPublicUrl() . "\n";
echo " Ключ: " . $resource->getPublicKey() . "\n";
}
}
// Отозвать публичный доступ
$result = $client->unpublish('/disk/document.pdf');
// Получение доступных публичных настроек
$available = $client->getAvailablePublicSettings();
print_r($available);
// Получение текущих публичных настроек ресурса
$settings = $client->getPublicSettings('/disk/document.pdf');
print_r($settings);
// Изменение публичных настроек
$client->changePublicSettings('/disk/document.pdf', [
'access' => [
'type' => 'public',
'view' => true,
'comment' => true,
'edit' => false
]
]);
// Получение метаданных публичного ресурса
$publicMeta = $client->getPublicResourceMeta('https://yadi.sk/d/abc123...');
echo "Публичный файл: " . $publicMeta['name'] . "\n";
// Скачивание публичного ресурса
$client->downloadPublicResource('https://yadi.sk/d/abc123...', '/local/downloaded.pdf');
// Сохранение публичного ресурса на ваш диск
$saveResult = $client->savePublicResource(
'https://yadi.sk/d/abc123...',
'saved-document.pdf',
'/disk/downloads/'
);
// Получение содержимого корзины
$trash = $client->getTrash('/', 50, 0);
foreach ($trash['items'] as $item) {
echo "- " . $item['name'] . " (удалён: " . $item['deleted'] . ")\n";
}
// Восстановление файла из корзины
$restoreResult = $client->restoreFromTrash('/disk/document.pdf');
echo "Восстановлено: " . $restoreResult['name'] . "\n";
// Восстановление с новым именем
$client->restoreFromTrash('/disk/document.pdf', 'restored-document.pdf', false);
// Удаление конкретного файла из корзины
$client->clearTrash('/disk/document.pdf');
// Очистка всей корзины
$client->clearTrash();
// Загрузка файла из интернет-URL
$uploadResult = $client->uploadFromUrl(
'https://example.com/document.pdf',
'/disk/downloads/document.pdf'
);
echo "Загрузка начата\n";
// Проверка статуса операции, если асинхронная
if (isset($uploadResult['href'])) {
$operationId = basename($uploadResult['href']);
$status = $client->getOperationStatus($operationId);
echo "Статус: " . $status['status'] . "\n";
echo "Завершено: " . ($status['status'] === 'success' ? 'Да' : 'Нет') . "\n";
}
// Загрузка без перенаправлений
$client->uploadFromUrl(
'https://example.com/document.pdf',
'/disk/downloads/document.pdf',
true // отключить перенаправления
);
// Получение публичных ресурсов, принадлежащих конкретному пользователю
$ownedResources = $client->getPublicResourcesOwnedByUser(
'user-uid-123',
'org-id-456',
20,
0
);
foreach ($ownedResources['items'] as $resource) {
echo "- " . $resource['name'] . " (" . $resource['public_url'] . ")\n";
}
// Получение публичных ресурсов, доступных пользователю (включая групповой доступ)
$accessibleResources = $client->getPublicResourcesAccessedByUser(
'user-uid-123',
'org-id-456',
true, // включить групповой доступ
20
);
// Отмена публикации ресурса пользователя как администратор
$client->unpublishUserResource(
'public-key-789',
'user-uid-123',
'org-id-456'
);
use Tigusigalpa\YandexDisk\Facades\YandexDisk;
// Использование фасада
$diskInfo = YandexDisk::getCapacity();
// Использование сервис-контейнера
$client = app('yandex-disk');
$client->uploadFile($localPath, $remotePath);
use Tigusigalpa\YandexDisk\Exceptions\YandexDiskException;
try {
$client->uploadFile('/path/to/file.txt', '/disk/file.txt');
} catch (YandexDiskException $e) {
echo "Ошибка: " . $e->getMessage() . "\n";
echo "Код ошибки: " . $e->getErrorCode() . "\n";
// Получить полный ответ API, если доступен
if ($e->getResponse()) {
print_r($e->getResponse());
}
}
bash
composer bash
php artisan vendor:publish --provider="Tigusigalpa\YandexDisk\YandexDiskServiceProvider"