使用jQuery加载自定义http处理程序ashx文件来显示png

时间:2011-04-18 17:16:16

标签: jquery asp.net ashx

我有一个自定义处理程序(ImageHandler.ashx),浏览时工作正常。它在服务器上找到一个zip文件,解压缩并将位图保存到OutputStream。当我尝试使用ashx使用jQuery加载时,我的png内容会以编码的乱码字体返回,而不是显示图像。

Bitmap convertedImg = new Bitmap(zInStream);
convertedImg.Save(context.Response.OutputStream, ImageFormat.Png);

2 个答案:

答案 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密集的解压缩。如果你只解压缩一次,然后从那时开始引用解压缩的版本,它会更快(对你的服务器来说更好)。