Где хранить файлы, загруженные пользователями? - PullRequest
0 голосов
/ 26 сентября 2019

История: пользователь может загружать личные файлы (pdf), например, его биографические данные.он также должен иметь возможность просматривать свои загруженные файлы.Я знаю, что база данных станет медленнее, поэтому я хочу хранить файлы в файловой системе.Но где я должен хранить файлы, чтобы он был безопасным и другие пользователи не могли его достать.Должен ли я просто создать каталог в моем проекте / решении или каталог за пределами моего проекта.Или я должен хранить все это в WWWROOT.кто-то может дать мне совет?

У меня есть приложение ASP.NET CORE mvc.Я хочу сохранить имя файла и путь в базе данных.загруженный файл должен быть сохранен в файловой системе.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете хранить в wwwroot и позволить всем получить к нему доступ или к пользовательской папке.

С учетом соображений безопасности вы можете проверить роль пользователя или добавить некоторое промежуточное ПО для ограничения доступа пользователя к этой папке.

или использовать

Статическая авторизация файлов

Промежуточное программное обеспечение статических файлов не обеспечивает проверки авторизации.Любые файлы, обслуживаемые им, в том числе под wwwroot, являются общедоступными.Чтобы обслуживать файлы на основе авторизации:

Храните их вне wwwroot и любого каталога, доступного для промежуточного программного обеспечения статических файлов.

Служите им с помощью метода действия, к которому применяется авторизация.Вернуть объект FileResult

[Authorize]
public IActionResult BannerImage()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), 
                            "MyStaticFiles", "images", "banner1.svg");

    return PhysicalFile(file, "image/svg+xml");
}
...