@akass
Developer

Как правильно указывать путь к изображениям в ASP.NET MVC 5?

Храню в базе пути к изображениям, сами они отдельно лежат.
Как правильно записать путь к изображению? Как не писал он их не видел.
Желательно так чтобы при публикации все нормально улетело и так же работало.
То есть как я понимаю нужен относительный путь, но "~/" не катит.
  • Вопрос задан
  • 5657 просмотров
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
Смотря что вы считаете нормой и "все нормально улетело".
1) вы можете хранить в базе(и не только можете но и храните) идентификаторы данных изображений. Соответственно вы можете их хранить в общей папке и в путь к изображению подписывать только идентификатор изображения.
2)Другой путь - написать небольшой контроллер, который отдает изображения по вашей логике. Путь к изображению у всех будет примерно один - controllerName/GetImage/ImageId , а откуда вы возьмете на сервере это изображение - ваше личное дело( данный метод тяжеловат для большого числа изображений.
3) Предположим что все ваши изображения в некой структуре лежат по пути Content/SomeFolder/SomeImage
вы можете писать тег примерно так - <img src = "Content/@ImagePath", а ImagePath хранить в базе строчкой SomeFolder/SomeImage.

На мой взгляд все эти пути имеют свои недостатки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
1. Хранить изображения в каталогах доступ к которым настроен через IIS (или другой web сервер), пример: "~/Images" проекта.
2. Отдавать содержимое файла,через созданный контроллер, тогда вы указываете на странице путь до контроллера, а он уже отдает контент файла, по пути указанному из записи в базе.
Ответ написан
gorbulevsv
@gorbulevsv
Самоучка
Привет, ребята! Я новичок в MVC (Димитрию Ковальскому хотел сказать спасибо за его ответы на вопросы в моём профиле, а также за то, что он надоумил меня попробовать перейти на MVC).
Тоже мучился с вставкой картинки, и откопал такое решение, вроде работает:
В контроллере формирую адрес к картинке таким образом:
string src=UrlHelper.GenerateContentUrl("~/Content/фотографии/фотография.jpg",this.HttpContext)


А ещё такой вариант:
string src=Url.Content("~/Content/фотографии/фотография.jpg")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы