Я хочу для практики и изучения языка php сделать упрощенную версию облачного сервиса для хранения файлов.
Грубо говоря это приложение которое позволяет создавать папки и подпапки, загружать файлы и тд.
Но немного не понимаю как это реализовать - я делал такие приложения - типа в БД хранился путь до изображения (файла), само изображение хранилось в папке на локальном сервере. Но я не понимаю где хранить изображения если я реализую облачное хранилище. Если просто хранить файлы где-то в DROPBOX мб? Но тогда мое приложение будет Системой Управления DROPBOX-ом, что не совсем то что я хочу создать. Я не въезжаю во что-то очень базовое кажется)
Для реализации в простейшем базовом виде достаточно знать php и html. Чтобы все сделать более-менее удобно, надо еще JavaScript. База данных здесь не нужны, так как нагрузка у такого мини-сервиса будет минимальная.
Начните с абстракции, интерфейсов и балансеров)) Ваша система не должна вообще ничего знать про то, где что хранится. Для начала это должен быть балансер, который в самом простом примере ведёт на локальный компьютер. В будущем будет вести на удалённый сервер, а еще позже на группу серверов распределяя контент по ним.
Но я не понимаю где хранить изображения если я реализую облачное хранилище.
Есть два варианта:
- хранить на "локальном" диске. При этом физически диск может быть не в локальном компьютере. Например, в AWS EC2 диски на самом деле не локальные.
- использовать API для управления удаленным storage
Что реализовывать? Для упражнения - оба варианта.
В обоих вариантах это можно назвать облачным.
"Облачное хранилище" - это много серверов. Вряд ли Вы такое осилите, в т.ч. по деньгам.
Ну или создавайте - протокол заливки файлов д.б. описан в документации для программы, создающей облако из нескольких серверов.
То, что Вы хотите, на одиноком сервере можно реализовать многими способами. Например, заливать можно по Samba (родной протокол для Windows), FTP или RSync. Можно заливать по HTTP-POST - тогда скрипт сразу будет регистрировать файл в БД.
Для обучения я бы порекомендовал реализовать задуманное как прослойку между пользователем и Amazon S3 – их API становится стандартом де-факто и реализован ещё несколькими облачными провайдерами.
Используйте амазоновский PHP SDK.
Скорее всего, вы создадите bucket в котором корневые "папки" будут индивидуальны для каждого пользователя вашего сервиса. Под ними уже пользователи смогут создавать свои подпапки.
Загрузку файлов придётся, вероятно, делать на ваш сервер, а оттуда уже отправлять на S3.