Как сделать функцию Share, как в Dropbox?

Здравствуйте. В интернете ответа на свой вопрос не нашел.

Разрабатываю хранилище файлов. Хочу прикрутить функцию share как в Dropbox.
Серверная часть хранилище написана на php.
На клиентской используется javascript.

Авторизованный пользователь скачивает свой файл, отправляя header-заголовки.

Структура размещения файлов на сервер выглядит так:
- userfiles (папка в корне сайта)
- - akaldygulov@gmail.com (папка пользователя)
- - - Здесь все файлы этого пользователя

Все работает, вот только не знаю, как сделать функцию Поделиться.
Буду благодарен за любые идеи.
  • Вопрос задан
  • 3090 просмотров
Решения вопроса 1
Очень странная модель выбрана, но... Каждому свое )

По поводу вопроса, то для Вас только 1 вариант это создание временной папки для каждого расшаренного файла из которой будете отдавать файлы без авторизации.

p.s.. Минусов Вашей схемы очень много. Например:
- как Вы будете бороться с дублированием файлов у пользователей?
- Масштабирование файлов одного пользователя по разным серверам?
- масштабировать активные и старые файлы по серверам в зависимости от нагрузки на канал..
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@aguz
Client-side developer
Всё дело в том, что физическое размещение файлов на сервере не обязано соответствовать паттерну урлов, которые будет видеть пользователь.

userfiles - это вполне может быть виртуальный путь (location в терминах nginx)
Тогда легче будет сконструировать путь для шаринга.

На сервере структура файлов может быть
- files - адрес хранилища
- - adc/dcf - папка, имя которой сконструированно из имени файла
- - - adcf832dnewjernrr43n5.png - имя файла в хранилище

Параллельно вам потребуется БД для хранения связей
adcf832dnewjernrr43n5 -> Origin file name | Size | Access date | Owner user | smth else

После этого вы средствами приложения сможете
/userfiles/akaldygulov@gmail.com/Pretty_image.png
перенаправлять на
/files/adc/dcf/adcf832dnewjernrr43n5.png

/share/adcf832dnewjernrr43n5/Pretty_image.png
проверять доступ и снова перенаправлять на
/files/adc/dcf/adcf832dnewjernrr43n5.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы