Первое:
Лучше изначально строить структуру проекта так, чтобы файловое хранилище было независимым и при высоких нагрузках не валило основной сайт, и чтобы в будущем было проще масштабировать проект.
Проще говоря, как минимум следует использовать разные домены/сайты для хранилищ файлов.
Например, основной сайт:
example.org
А хранилище файлов:
storage1.example.org
Даже размещая основной сайт и хранилище(а) на одном сервере, можно будет распределить нагрузку между проектами.
Тогда и проблема с
mime отпадет сама собой.
Второе: Если файлы выдаются серверным кодом, то достаточно добавить заголовок
Content-Disposition, чтобы браузер предложил пользователю скачать файл:
Response.AddHeader("Content-Disposition", "attachment; filename=123.gif");