使用 IHttpHandler 服务图像

Serve Image with IHttpHandler

我正在使用仅在我们的内部网络上可用的网络服务器。我需要通过我们的 DMZ 网络服务器将它提供的图像提供给 public。内部系统有一个 GUI,任何人都可以上传任何类型的图像,所以我的 HttpHandler 必须灵活。

我目前使用的代码是:

WebResponse webResponse = WebRequest.Create(imagePath).GetResponse();
using (Stream stream = webResponse.GetResponseStream())
{
    context.Response.Clear();
    context.Response.ContentType = webResponse.ContentType;
    stream.CopyTo(context.Response.OutputStream);
    context.Response.End();
}

这似乎有效,它在 HTML 页面上正确提供图像,但是当我右键单击 Chrome 和 select "Open image in new tab" 时,我的文字出现乱码像这样:

任何改进我的代码的建议或者这样可以吗?

谢谢!

编辑:似乎这段代码完全按照它应该做的去做。问题出在内部托管的图像本身。它甚至在 运行 之前通过此 HttpHandler 提供完全相同的乱码文本。

您的内容类型 header 可能设置不正确。

将其更改为 context.Response.ContentType = "image/png";,但将 "png" 替换为您正在加载的图像时间。