【问题标题】:Image Handler not Loading Image图像处理程序未加载图像
【发布时间】:2018-06-14 13:38:04
【问题描述】:

我正在使用图像处理程序来调整图像大小。但它没有加载图像。

查看:

 <img src="ImageHandler.ashx?file=~/Images/Releases/koala.jpg" style="width:100px; height:100px;" />

图像处理程序代码。 抱歉,我无法在此处添加整个图像处理程序代码,因此添加为图像。 我在这里缺少什么。请提出建议。

【问题讨论】:

  • 处理程序代码在哪里?
  • 您是否在 web.config 中注册了您的处理程序?
  • 是的。这里是代码
  • 你是否忽略了处理程序 routes.IgnoreRoute("ImageHandler.ashx");

标签: asp.net asp.net-mvc asp.net-mvc-5 httphandler


【解决方案1】:

我发现了两个问题。

  1. 请求 URL 中的 QueryString 值应该只是文件名 - ImageHandler.ashx?file=koala.jpg

    <img src="ImageHandler.ashx?file=koala.jpg" style="width:100px; height:100px;" />

  2. QueryString 名称应为 file 而不是 photo_url

请确保以下代码在调整大小之前有效。

public class ImageHandler : IHttpHandler
{    
    public void ProcessRequest(HttpContext context)
    {
        string fileName = context.Request.QueryString["file"];
        string filePath = context.Server.MapPath("~/Images/Releases/" + fileName);

        context.Response.AddHeader("content-disposition", 
             string.Format("attachment; filename={0}", fileName));

        if (File.Exists(filePath))
        {
            byte[] bytes = File.ReadAllBytes(filePath);
            context.Response.BinaryWrite(bytes);
        }
        else
        {
            throw new HttpException(404, "Invalid photo name.");
        }
    }

    public bool IsReusable { get { return false; } }
}

【讨论】:

  • 请在 ImageHandler 中设置断点,并发布您收到的错误消息。
  • 错误消息显示无法创建类型“PressRoom.ImageHandler”。
  • 好像有什么东西损坏了。你能删除那个处理程序文件并创建一个新的吗?
  • 我尝试调试我的代码。字符串文件名 = context.Request.QueryString["file"]; string filePath = context.Server.MapPath("~/Images/Releases/" + fileName); fileName 为空,这就是它不渲染图像的原因。当我对图像进行硬编码时,它正在显示。如何获取图片图片文件夹?
  • 在该行之后设置断点时filePath 的值是多少?您需要根据项目中的文件位置修改路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
相关资源
最近更新 更多