我有一个自定义处理程序(ImageHandler.ashx),浏览时工作正常。它在服务器上找到一个zip文件,解压缩并将位图保存到OutputStream。当我尝试使用ashx使用jQuery加载时,我的png内容会以编码的乱码字体返回,而不是显示图像。
Bitmap convertedImg = new Bitmap(zInStream);
convertedImg.Save(context.Response.OutputStream, ImageFormat.Png);
答案 0 :(得分:2)
这是因为您从服务器请求的是图像,而不是显示图像的HTML代码。
不要使用load
方法,只需创建一个图像元素,其中包含处理程序的URL作为源:
$('#SomeElement').append($('<img/>', { src: 'ImageHandler.ashx', alt: 'An image' }));
注意:如果zip文件包含PNG图像,那么您不必将其解压缩到Bitmap
对象,然后再将其打包为PNG格式,您只需发送zip流的内容即可直接到响应流。
答案 1 :(得分:0)
确保将响应的内容类型设置为"image/png"
,如下所示:
context.Response.ContentType = "image/png";
Bitmap convertedImg = new Bitmap(zInStream);
convertedImg.Save(context.Response.OutputStream, ImageFormat.Png);
这可以确保浏览器将返回的内容视为PNG图像而不是text / html。
修改强>
另外,我建议每次加载图像时都不要进行cpu密集的解压缩。如果你只解压缩一次,然后从那时开始引用解压缩的版本,它会更快(对你的服务器来说更好)。