Как назначить путь к серверу для img src - PullRequest
0 голосов
/ 16 мая 2019

Я хочу показать изображение в базе данных.Я сохраняю путь к изображению в базе данных, поэтому хочу указать этот путь к img src="", но он не работает.Код следующий:

Следующий код виден

@{
   var FileName = db.UserImages.FirstOrDefault(x => x.UserID == User.Identity.Name).ImgName;
   var serverpath = Server.MapPath("~/App_Data/ProfileImages/");
   string filename = Path.GetFileName(FileName);
   string fullpath = Path.Combine(serverpath, filename);

   ViewBag.fullpath = fullpath;
}

<img src="@Url.Content("~/App_Data/ProfileImages/" + System.IO.Path.GetFileName(ViewBag.fullpath))" class="user-image" alt="User Image">

Изображение не загружается, если путь правильный, но не работает

Ответы [ 3 ]

1 голос
/ 16 мая 2019

Использование абсолютного пути не рекомендуется для URL изображения.

Вы должны настроить путь к изображению в web config или переместить изображение в CDN и использовать его.

В веб-конфигурации

<appSettings>
   <add key="BaseImageUrl" value="/Content/Images" />
</appSettings>

In cshtml

@{
    var FileName = db.UserImages.FirstOrDefault(x => x.UserID == User.Identity.Name).ImgName;
    var baseUrl = ConfigurationManager.AppSettings["BaseImageUrl"];
    var imagePath = string.Format("{0}/{1}", baseUrl, FileName);
}

<img src="@imagePath" class="user-image" alt="User Image"/>

Вы также должны переместить код, чтобы получить FileName на контроллере, или уровень сервиса не должен кодировать на уровне пользовательского интерфейса.

1 голос
/ 16 мая 2019

Разве это не должно быть просто ниже, поскольку ваш fullpath по существу содержит полный путь к указанному файлу изображения

<img src="@Url.Content(ViewBag.fullpath)" class="user-image" alt="User Image">
0 голосов
/ 16 мая 2019

Вызов Server.MapPath даст вам путь к файлу на основе сервера, то есть что-то вроде c: \ sites \ mywebsite \ App_Data \ ProfileImages , который обычно недоступен черезИнтернет.

Из вашего фрагмента кода кажется, что вам просто нужно объединить очищенное FileName, полученное из базы данных, с ~ / App_Data / ProfileImages /

@{
   var FileName = db.UserImages.FirstOrDefault(x => x.UserID == User.Identity.Name).ImgName;
   string filename = Path.GetFileName(FileName);
}

<img src="@Url.Content("~/App_Data/ProfileImages/" + filename)" class="user-image" alt="User Image">

edit: App_Data - это специальная защищенная папка, из которой IIS не будет обслуживать файлы, если не настроен для этого, посмотрите system.webServer / security / requestFiltering / hiddenSegments

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...