They're not exclusive. Quite often developers use a filesystem with a database.
Store the file on the filesystem with a unique name. Store the original name, the unique name, the owner, tags, a description, locking, auth, enforce uniqueness, and track access with the database.
Then try and keep things performant and handle concurrency!
Try doing all of the above just using a filesystem and you'll either:
1. Waste years making a rubbish database. 2. Do a bad job trying to do everything with flat files.
PostgreSQL/MySQL or SQLite are easy wins.