Fancybox правильно не отображает потоковое изображение

У меня есть страница aspx, которая передает потоки в формате JPEG. Он устанавливает тип контента и затем записывает в поток ответов. Если я смотрю изображения напрямую, они работают, но если я использую fancybox 1.2.6, я получаю следующее. alt text

Используя fancybox 1.2.1, изображения отображаются.

Вот код, который выталкивает изображение.

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (Image outImg = Image.FromStream(responseStream))
                {
                    Response.Clear();
                    Response.ContentType = "image/jpeg";
                    outImg.Save(Response.OutputStream, ImageFormat.Jpeg);
                }
            }
        }

Любая помощь?

Ответ 1

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

imageRegExp = /\.(aspx|jpg|gif|png|bmp|jpeg)(.*)?$/i;

Я только что добавил aspx, но вам нужно будет сделать дополнительную работу, чтобы она функционировала правильно.

Ответ 2

Наши изображения также не имели расширений и были просто испусканы обработчиком ashx.

В итоге мы добавили 'type': 'image' в объявление fancybox, например:

$('.fb1').fancybox({'titlePosition':'inside','type':'image'})

Что работало отлично.

Ответ 3

См. пункт 6 в FAQ Fancybox:

FancyBox отображает тип содержимого с URL-адреса, но иногда это может быть неправильно. Решение состоит в том, чтобы заставить ваш тип, например, $( ". selector" ). fancybox ({'type': 'image'});

(требуемая версия 1.3 +)

Ответ 4

Можем ли мы увидеть ваш серверный код, который публикует контент? Похоже, что тип контента не установлен правильно или был установлен до того момента, когда вы выводите свои данные. Вы можете попробовать Response.Clear() перед выводом вашего нового типа контента. (Ваш браузер может принимать тип контента при его открытии напрямую)