由于一些奇怪的原因,一个五年的内部asp.net网络应用程序即通过IE6使用突然出现问题,即使没有代码的变化。某些用户不会看到正在流式传输到Web浏览器的某些图像。如何流式传输字节数组图像?
我不知道为什么这个突然开始发生或者原因是什么 - 不过作为搜索的一部分,我正在考虑用于流式传输图像的代码是否存在缺陷。
图像保存在内存中是一个字节数组,然后使用以下代码进行流式传输。这是流式传回图像的最佳方式吗?
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
// Work out file type
switch(Path.GetExtension(imageFilename).ToLower())
{
case ".jpg":
case ".jpeg":
Response.ContentType = "image/jpeg";
break;
case ".gif":
Response.ContentType = "image/gif";
break;
default:
Response.ContentType = "binary/octet-stream";
break;
}
Response.AddHeader("Content-Length", imageBytes.Length.ToString());
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(imageBytes);
Response.End();
不是在页面中显示图像,而是显示红色十字。这只发生在页面上显示的动态生成的图像上,而不是静态链接的图像。
如果我尝试在自己的窗口中打开图像,我会看到图像或一大堆gobbledygook文本(我猜这意味着MIME类型没有被浏览器设置/拾取)
乍一看似乎是合适的,但你能概述一下你的客户有哪些“问题”?这是全部图像还是仅仅是一些?随机?他们是下载这些图像还是嵌入父页? – Mantorok 2011-06-06 12:44:39
当图像没有出现时,你会得到什么样的位置?空白,红-X等? – 2011-06-06 12:58:34
@Mantorok @Damien_The_Unbeliever我已经用澄清更新了原始问题。 – 2011-06-06 13:56:13