使用 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" 替换为您正在加载的图像时间。
我正在使用仅在我们的内部网络上可用的网络服务器。我需要通过我们的 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" 替换为您正在加载的图像时间。