【问题标题】:Use jQuery load with a custom http handler ashx file to show a png使用带有自定义 http 处理程序 ashx 文件的 jQuery 加载来显示 png
【发布时间】:2011-04-18 17:16:15
【问题描述】:

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

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

【问题讨论】:

  • 向我们展示你的 jQuery 代码

标签: jquery asp.net ashx


【解决方案1】:

那是因为您从服务器请求的是图像,而不是显示图像的 HTML 代码。

不使用load 方法,只需创建一个图像元素,并将处理程序的URL 作为源:

$('#SomeElement').append($('<img/>', { src: 'ImageHandler.ashx', alt: 'An image' }));

注意:如果 zip 文件包含 PNG 图像,则不必将其解压缩为 Bitmap 对象,然后将其再次打包为 PNG 格式,您可以直接将 zip 流的内容发送到响应流。

【讨论】:

  • 嘿 Guffa,这是个好主意,而且效果很好 - 谢谢!
  • 顺便说一句,参考您的注释 - 检索到的图像通常是 tiff 或 bmp 文件,这就是我进行转换的原因。
【解决方案2】:

确保在您对"image/png" 的回复中设置内容类型,如下所示:

context.Response.ContentType = "image/png";
Bitmap convertedImg = new Bitmap(zInStream);
convertedImg.Save(context.Response.OutputStream, ImageFormat.Png);

这可确保浏览器将返回的内容视为 PNG 图像而不是 text/html。

编辑
另外,我建议不要在每次加载该图像时进行 cpu 密集型解压缩。如果您只解压缩一次然后从那时起引用解压缩的版本,它会更快(并且对您的服务器更好)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多