Подтвердить что ты не робот

Изображение ASP.NET MVC из массива байтов

В настоящее время у меня есть массив байтов, представляющий мое изображение в моей модели ViewModel. Я показываю его со следующим кодом:

<img src="@String.Format("data:image/gif;base64,{0}", Convert.ToBase64String(Model.Image))" />

Теперь я не хочу иметь строку Base64 в исходном файле, а скорее ссылку на изображение. Как:

<img src="Images/" + Model.Id"/>

который вернет изображение.

Как написать такой метод для возврата ссылки на изображение?

4b9b3361

Ответ 1

Вы можете определить действие контроллера, которое будет обслуживать изображение:

public class ImagesController: Controller
{
    public ActionResult Index(int id)
    {
        byte[] imageData = ... go get your image data from the id
        return File(imageData, "image/png"); // Might need to adjust the content type based on your actual image type
    }
}

и в вашем представлении просто укажите свойство src тега img на это действие контроллера:

<img src="@Url.Action("Index", "Images", new { id = Model.Id })" />

Ответ 2

Один из способов - добавить это в новый класс С# или класс htmlExtensionsclass

public static class HtmlExtensions
{
    public static MvcHtmlString Image(this HtmlHelper html, byte[] image)
    {
        var img = String.Format("data:image/jpg;base64,{0}", Convert.ToBase64String(image));
        return new MvcHtmlString("<img src='" + img + "' />");
    }
}

то вы можете сделать это в любом представлении

@Html.Image(Model.MyImageBytes)