Если бы я следил за этим пример, загрузки файлов сохранялись бы в файле wwwroot. Насколько я понимаю, в этом файле вы должны хранить статические файлы, которые будут обслуживаться пользователем. Конечно, я хочу, чтобы мои пользователи могли скачивать, но есть ли файловая система, специфичная для asp.net core / IIS / Windows Server 2012, которая была бы лучше всего? Я ожидаю, что через несколько лет максимум будет около 10 000 файлов.
Планирую создать папку для загруженных документов, просто не знаю, где ее разместить.
Примечание: предоставленного ответа здесь было недостаточно
Насколько я понимаю, если вы не примете особых мер предосторожности, файлы с wwwroot могут быть свободно загружены пользователями, ботами и т. д. Без аутентификации. Если файлы не являются конфиденциальными по своей природе, тогда нет ничего плохого в использовании wwwroot.
Если вы хотите обеспечить безопасность на уровне контроллера (например, пользователь может просматривать только свои собственные файлы), то, вероятно, лучше разместить их в другом месте файловой системы. Путь может быть произвольным, но настройки безопасности в папке должны быть установлены таким образом, чтобы процесс dotnet мог получить к ней доступ. Вы можете предоставить всем полный доступ или ввести более строгие ограничения, если сочтете нужным. Это делается непосредственно в ОС сервера, если у вас есть к ней доступ.
Если путь произвольный, я могу просто щелкнуть правой кнопкой мыши проект -> Добавить -> Новая папка и сохранить их там, или я могу создать папку на сервере, верно? Не должно иметь значения?
Да, в любом случае будет работать. Если вы вводите IHostingEnvironment в свою службу, вы можете использовать hostingEnvironment.ContentRootPath
, чтобы получить абсолютный путь к верхнему уровню вашей файловой структуры, как показано в Visual Studio. hostingEnvironment.WebRootPath
дает вам абсолютный путь к wwwroot.
На самом деле было бы лучше полностью исключить его из вашего проекта. Таким образом, нет никаких шансов случайно зафиксировать что-либо в системе управления версиями, и вы можете развернуть несколько копий вашего приложения (сценарии балансировки нагрузки и т. д.), Которые все читают / пишут из общего каталога. Вы можете использовать свою конфигурацию, чтобы указать каталог, а затем также отключить его в зависимости от среды.
@ChrisPratt хотите оставить ответ?
Я бы не стал этого делать по 2 причинам. 1. Сохраняйте контроль и обзор. Я бы создал подпапку и дал ей необходимые права для создания и записи в нее загруженных файлов. 2. После этого вы можете изменить авторизацию, если ваши требования когда-либо изменятся.
Файлы конфиденциальны, поэтому я буду хранить их вне wwwroot. Только что нашел строку «Хранить их вне wwwroot и любого каталога, доступного для промежуточного программного обеспечения статических файлов и ...» в документах, в которых это указано. : | Вероятно, следует прочитать это более внимательно ... ссылка на документы -> docs.microsoft.com/en-us/aspnet/core/fundamentals/…