Ответ 1
Я уверен, что Chrome требует, чтобы длина была установлена для изображений, поэтому попробуйте добавить заголовок Content-Length к вашему ответу при обработке изображения.
В основном у меня есть веб-сайт, который отображает предварительный просмотр HTML некоторых документов (главным образом, офис). Полученный фрагмент HTML включен в страницу, возвращенную одним и тем же веб-сайтом, однако изображения возвращаются обработчиком HTTP с другого сайта со следующими ссылками:
<img width="50" height="50" src="http://portal/Service/GetFile.asxh?id=123&inline=true">
По какой-то причине все браузеры, кроме Chrome (например, IE6/7/8, Firefox, Opera, Safari), показывают все просто прекрасно, однако для этих изображений Chrome показывает значок "сломанное изображение". Если я выберу "Открыть изображение на новой вкладке", то изображение будет отображаться просто отлично.
Изменить Я думал, что решил эту проблему, но, видимо, с помощью Fiddler это работает нормально.
У меня был context.Response = "utf-8" осталось в коде, но удаление его не имело разницы.
Headers:
HTTP/1.1 200 OK
Date: Wed, 05 Jan 2011 14:26:57 GMT
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Transfer-Encoding: chunked
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: image/jpeg
код:
context.Response.ContentType = file.ContentType;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
byte[] buff = new byte[BuffSize];
using (var stream = repository.GetFileContentsAsStream(file.ContentId))
{
int bytesRead;
do
{
bytesRead = stream.Read(buff, 0, BuffSize);
if (bytesRead > 0)
{
context.Response.OutputStream.Write(buff, 0, bytesRead);
}
} while (bytesRead > 0);
}
context.Response.Flush();
context.Response.Close();
Я уверен, что Chrome требует, чтобы длина была установлена для изображений, поэтому попробуйте добавить заголовок Content-Length к вашему ответу при обработке изображения.
Это контекст .Response.Close(); Chrome не нравится. Избавьтесь от этой линии, и все будет хорошо. Я боролся с этим в течение нескольких месяцев.
Вы должны добавить это:
Response.AddHeader("Content-Disposition", "inline;Filename=\"Picture.gif\"");
Response.AddHeader("Content-Length", filesize.ToString());
https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support
Моя проблема после того, как вы пробовали все вышеперечисленное, просто заключалась в том, что хром среди других не поддерживает мой тип изображения. Tiff не поддерживается хром.