Простая работа с Dropbox API
// Вывод дерева
printTree($tree);
if (isset($_GET[‘action’])) {
switch ($_GET[‘action’]) {
// Создание новой папки
case ‘newdir’:
if (isset($_GET[‘pid’])) {
include ‘form-create-dir.php’;
if ($_POST) {
if (!empty($_POST[‘newFolder’])) {
$affixPath = urldecode(base64_decode(htmlspecialchars($_GET[‘pid’])));
$dirName = htmlspecialchars($_POST[‘newFolder’]);
$folder = $dropbox->createFolder(«$affixPath/$dirName»);
header(‘Location:’ . filter_var($redirect_uri, FILTER_SANITIZE_URL));
} else {
die(‘Заполните название папки’);
}
}
}
break;
// Загрузка файлов
case ‘upload’:
if (isset($_GET[‘fid’])) {
include ‘form-upload-file.php’;
if (isset($_FILES[‘Files’]) && is_uploaded_file($_FILES[‘Files’][‘tmp_name’][0]) && ($_FILES[‘Files’][‘error’][0] == 0)) {
$files = normalizeFilesArray($_FILES);
$affixPath = urldecode(base64_decode(htmlspecialchars($_GET[‘fid’])));
foreach ($files as $file) {
$file = $dropbox->upload(
DropboxFile::createByStream(«$affixPath/{$file[‘name’]}», file_get_contents($file[‘tmp_name’])),
«$affixPath/{$file[‘name’]}»,
[‘autorename’ => true]
);
}
header(‘Location:’ . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
}
break;
case ‘delete’:
if (isset($_GET[‘fid’])) {
$deletedFolder = $dropbox->delete(urldecode(base64_decode(htmlspecialchars($_GET[‘fid’]))));
header(‘Location:’ . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
break;
}
}
ob_end_flush();
/** Функции */
function makeTree(Dropbox &$dropbox, $path)
{
$branch = [];
// Список файлов и папок
$listFolderContents = $dropbox->listFolder($path);
// Получить элементы
$items = $listFolderContents->getItems();
// Все элементы как массив
$listFiles = $items->toArray();
foreach ($listFiles as $k => $item) {
$branch[$k] = [
‘id’ => substr($item->id, 3),
‘name’ => $item->name,
‘path’ => $item->path_display,
‘type’ => $item->getData()[‘.tag’],
];
// Дата и время в нормальном виде
if (isset($item->getData()[‘server_modified’])) {
$branch[$k][‘created’] = $item->getData()[‘server_modified’];
}
// Размер файла
if ($item->size) {
$branch[$k][‘size’] = $item->size;
}
if ($item->getData()[‘.tag’] == ‘folder’) {
$branch[$k][‘children’] = makeTree($dropbox, $item->path_lower);
}
}
return $branch;
}
function printTree($tree)
{
if (!is_null($tree) && count($tree) > 0) {
echo ‘<ul>’;
foreach ($tree as $kn => $node) {
echo ‘<li>’;
if ($node[‘type’] == ‘folder’) {
$url = ‘https://www.dropbox.com/home’ . $node[‘path’];
}
if ($node[‘type’] == ‘file’) {
$url = ‘https://www.dropbox.com/preview’ . $node[‘path’] . ‘?role=personal’;
}
echo ‘<a href=»‘ . $url . ‘»>’;
if ($node[‘type’] == ‘folder’) {
echo ‘<b>’ . $node[‘name’] . ‘</b>’;
} else {
echo $node[‘name’];
}
echo ‘</a> ‘;
if ($node[‘type’] == ‘file’) {
echo date(‘d.m.Y H:i:s’, strtotime($node[‘created’]));
}
if ($node[‘type’] == ‘folder’) {
echo ‘ <a href=»?action=newdir&pid=’ . base64_encode(urlencode($node[‘path’])) . ‘» title=»Новая папка»><i class=»icon-new»></i></a>’;
}
echo ‘ <a href=»?action=upload&fid=’ . base64_encode(urlencode($node[‘path’])) . ‘» title=»Загрузить файл(ы)»><i class=»icon-upload»></i></a>’;
echo ‘ <a href=»?action=delete&fid=’ . base64_encode(urlencode($node[‘path’])) . ‘» title=»Удалить файл(ы)» onclick=»return confirm(\’Вы действительно хотите удалить данный файл?\’);»><i class=»icon-delete»></i></a>’;
require(«vendor/autoload.php»);
— Откуда это родилось в коде то?
в https://github.com/kunalvarma05/dropbox-php-sdk — нет такого ни разу
Добрый день! В начале статьи написано, что подразумевается, умеете работать с Composer.
Если выполнить установку через composer
, то обычно появляется папка vendor. Вот там обычно есть такой файл. В данном случае он нужен для автозагрузки.