Можно ли хранить изображения, отличные от папки wwwroot

Я сохранил изображения в папке "Изображения", которой нет в папке wwwroot. Так что теперь я не могу получить к нему доступ, поэтому мой вопрос заключается в том, как предоставить доступ к папке, содержащей изображения, и эта папка не является подпапкой wwwroot? Или эти файлы обязательно помещать в папку wwwroot?

1 ответ

Решение

Да, Asp.Net Core предоставляет способ сделать это. Вы можете подавать изображения из каталога Images, который не находится в папке wwwroot. На самом деле, вы можете обслуживать их из любого места, включая встраивание файлов ресурсов или даже из базы данных.

Ключ должен зарегистрировать FileProvider в Configure метод файла Startup.cs, чтобы Asp.Net Core знал, как получить доступ к файлу, который нужно обслуживать.

Так, например, в вашем случае, так как вы хотите обслуживать изображения из каталога с именем Images, скажем, ваша иерархия каталогов выглядит следующим образом:

wwwroot
     css
     images
     ...

 Images
     my-image.png

Для обслуживания my-image.png из изображений вы можете использовать следующий код:

 public void Configure(IApplicationBuilder app){
     app.UseStaticFiles(); // For the wwwroot folder

     app.UseStaticFiles(new StaticFileOptions(){
     FileProvider = new PhysicalFileProvider(
         Path.Combine(Directory.GetCurrentDirectory(), @"Images")),
         RequestPath = new PathString("/Images")
     });
 }

Подробнее об обслуживании статических файлов вы можете узнать здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files

Другие вопросы по тегам