Create a custom node type with multiple filter options (depending on the node tags). Create a view to only list those nodes (multiple fields and an image) which correspond to the used filters, set by the website visitor.
Install a document management module (or create one) of your choice. Reading, writing options must be set on a file/folder/role basis.
The website is a drupal 7 website.