Assumptions: Microsoft stack (ASP.NET; SQL Server).
Some content management systems handle user-generated content (images, file attachments) by storing it in the file system. Others store these items in the back end database.
Some examples of both:
- In the filesystem: Community Server, Graffiti CMS
- In the database: Microsoft Sharepoint
I can see pros and cons of each approach.
In the filesystem
- Lightweight
- Avoids bloating the database
- Backup and restore potentially simpler
In the Database
- All content together in one repository (the database)
- Complete separation of concerns (content vs format)
- Easier deployment of web site (e.g. directly from Subversion repository)
What's the best approach, and why? What are the pros and cons of keeping user files in the database? Is there another approach?
I'm making this question Community Wiki because it is somewhat subjective.