Таблица files [id, user_id, path, name, size, mime, ...]
Файлы переименовываются во что угодно и сохраняются в /private/storage/files/user_id/XXXXXXX.ext
В базу сохраняем оригинальное имя, размер, тип и физический путь.
Роутинг /cloud с доступом только для авторизованных
<?php namespace App\Http\Controllers;
class CloudController extends Controller {
/**
* Список файлов пользователя
*
* @return \Illuminate\View\View
*/
public function cloud() {
$files = \Auth::user()->files()->paginate(20);
return view('template', compact('files'));
}
}
Файлы можно вынести вне DOCUMENT_ROOT.
Наверное как-то бы так делал.