Существует 2 варианта:
1-й вариант:
Сохраните путь к изображению в вашей базе данных и динамически установите src
для <img>
2-й вариант:
Сохраните данные изображения в вашей базе данных и восстановите их при загрузке, ваш <img>
src
должен быть действием контроллера, который загружает, создает и возвращает изображение.
Edit
Быстрый пример для варианта 2:
В вашем cs html определите ваше изображение следующим образом:
<img src="@Url.Action("GetFromDB", "Image", new { id = 1234 })" />
Обратите внимание, вы можете установить идентификатор вашей фотографии динамически, в зависимости от вашего сценария. Допустим, у вас есть класс пользователя, которому назначено изображение профиля, вам просто нужно использовать этот идентификатор.
В бэкэнде вам нужно действие, которое обрабатывает этот запрос, в этом примере в ImageController
:
public ActionResult GetFromDB(int id)
{
var image = _dbContext.Find(id);
return File(image.PictureData, image.ContentType);
}
Предполагается, что у вас есть простая модель базы данных для изображений, подобная этой:
class Image
{
[Key]
public int ID { get; set; }
public byte[] PictureData { get; set; }
public string ContentType { get; set; }
}
Чтобы сохранить изображение в базе данных, вам просто нужно получить его байты и тип контента для Пример как это:
using (var ms = new MemoryStream())
{
using (var uploadedImage = Image.FromStream(formFile.OpenReadStream(), true, true))
{
uploadedImage.Save(ms, ImageFormat.Jpeg); // you can actually chose this yourself, depending on your scenario
}
var image = new Model.Image()
{
PictureData = ms.ToArray(),
ContentType = "image/jpeg" // needs to match what you chose above
};
_dbContext.Pictures.Add(image);
_dbContext.SaveChanges();
}