проблема рендеринга изображения в браузере FileContentResult - PullRequest
0 голосов
/ 01 июня 2011

Я хочу показать изображение из базы данных

У меня есть действие

 public FileContentResult GetImage(string param)

        {

      type obj  = _someRepository.GetType(param);

            if (obj!= null && obj.Image!= null)
            {

                return File(obj.Image.ToArray(), obj.Image.MimeType);
            }

            return "some default image";
        }

в представлении, которое у меня есть

< img src="<%:Url.Action("GetImage","ControllerName",new { param= somevalue })%>"  alt="some text"
            width="100px" height="100px" />

У меня также есть

 (Html.BeginForm("actionname", "controllername", FormMethod.Post, new { enctype = "multipart/form-data" })

set.

Данные изображения извлекаются из базы данных. Но я не вижу изображение в браузере, есть что-то, чего мне не хватает?

1 Ответ

1 голос
/ 02 июня 2011

Вот шаги, которые я хотел бы выполнить, чтобы изолировать проблему. Начните с простого действия контроллера, которое возвращает жестко закодированное изображение где-то с вашего жесткого диска:

public ActionResult GetImage(string param)
{
    byte[] image = File.ReadAllBytes(@"c:\work\foo.png");
    return File(image, "image/png");
}

Теперь перейдите непосредственно к /ControllerName/GetImage в вашем браузере, и вы должны увидеть изображение.

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

type obj = _someRepository.GetType(param);
File.WriteAllBytes(@"c:\work\foo.png", obj.Image.ToArray());

Теперь извлеките сгенерированный файл и посмотрите, действителен ли он. Последний шаг - убедиться, что URL, сгенерированный в теге <img>, совпадает с тем, который вы использовали для непосредственного тестирования. Затем посмотрите на вкладку FireBug Net, чтобы узнать, правильно ли браузер запрашивает изображение и что возвращает сервер.

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

Поскольку форма, которую вы указали в своем вопросе, предназначена для загрузки файлов, она не имеет ничего общего с обслуживанием динамических изображений из действия контроллера, поэтому я не вижу, какое отношение это может иметь к вашему вопросу.

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