Інтеграція Dropbox API з сайтом

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція Dropbox API з сайтом
Середня
від 1 робочого дня до 3 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція Dropbox API з веб-сайтом

Dropbox API дозволяє завантажувати та скачувати файли, управляти папками та створювати спільні посилання. Використовується як файловий бекенд для сайтів: завантаження користувальницьких файлів в Dropbox, доступ до медіатеки, резервні копії.

Аутентифікація

import { Dropbox } from 'dropbox';

// Для серверних операцій: App-level токен
const dbx = new Dropbox({ accessToken: process.env.DROPBOX_ACCESS_TOKEN });

// Для користувальницьких операцій: OAuth2 flow

Завантаження файлу

async function uploadFile(filePath: string, fileContent: Buffer): Promise<string> {
  const resp = await dbx.filesUpload({
    path:       filePath,     // '/uploads/documents/contract.pdf'
    contents:   fileContent,
    mode:       { '.tag': 'add' },
    autorename: true,         // якщо файл існує — додасть (1) до імені
  });

  // Створюємо тимчасове спільне посилання
  const linkResp = await dbx.sharingCreateSharedLinkWithSettings({
    path: resp.result.path_display!,
    settings: {
      requested_visibility: { '.tag': 'public' },
      expires: new Date(Date.now() + 7 * 86400000).toISOString(),
    },
  });

  // Конвертуємо посилання для прямого скачування
  return linkResp.result.url.replace('www.dropbox.com', 'dl.dropboxusercontent.com').replace('?dl=0', '');
}

Chunked Upload для великих файлів

async function chunkedUpload(filePath: string, data: Buffer): Promise<string> {
  const CHUNK_SIZE = 8 * 1024 * 1024;  // 8MB

  // Початок сесії
  const session = await dbx.filesUploadSessionStart({
    contents: data.slice(0, CHUNK_SIZE),
    close:    data.length <= CHUNK_SIZE,
  });

  let offset = CHUNK_SIZE;
  while (offset < data.length) {
    const chunk = data.slice(offset, offset + CHUNK_SIZE);
    const isLast = offset + chunk.length >= data.length;

    if (isLast) {
      await dbx.filesUploadSessionFinish({
        cursor:  { session_id: session.result.session_id, offset },
        commit:  { path: filePath, mode: { '.tag': 'add' } },
        contents: chunk,
      });
    } else {
      await dbx.filesUploadSessionAppendV2({
        cursor:   { session_id: session.result.session_id, offset },
        contents: chunk,
      });
    }
    offset += CHUNK_SIZE;
  }

  return filePath;
}

Webhooks

Dropbox сповіщає про зміни в папках через webhooks — зручно для синхронізації медіатеки:

Route::post('/webhooks/dropbox', function (Request $request) {
    $signature = $request->header('X-Dropbox-Signature');
    $expected  = hash_hmac('sha256', $request->getContent(), config('services.dropbox.app_secret'));

    if (!hash_equals($expected, $signature)) abort(401);

    foreach ($request->input('list_folder.accounts', []) as $accountId) {
        SyncDropboxFolder::dispatch($accountId);
    }

    return response('ok');
});

Графік

Завантаження/скачування файлів з OAuth2: 2–3 робочих дні.