【问题标题】:Display an image with a special character in the url在 url 中显示带有特殊字符的图像
【发布时间】:2013-01-16 20:12:55
【问题描述】:

使用this question,我正在读取一个图像文件夹,然后在网页上显示这些图像。

目前,除了带有特殊字符的图像外,一切正常。

带有“&”符号的名称显示图片链接已损坏。有什么方法可以在不更改图像名称的情况下显示图像?

我试过了

var images =
            from image in Directory.EnumerateFiles(Server.MapPath("~/_resources/game_icon"), "*.*", SearchOption.AllDirectories)
            let filename = Path.GetFileNameWithoutExtension(image)
            let relativeLocation = Path.GetFullPath(image).Replace(Server.MapPath("~"), string.Empty).Replace("\\", "/")//.Replace(Path.GetFileName(image), HttpUtility.UrlEncode(Path.GetFileName(image)))
            let splitted= string.Join("/", relativeLocation.Split('/').ToList().Select(p => Server.UrlEncode(p)))
            let url = ResolveUrl("~/" + splitted)
            where image.ToLower().Contains(txtGameName.Text.ToLower())
            select new
            {
                Filename = filename,
                Url = url
            };

但所有图像都损坏了。

【问题讨论】:

    标签: c# asp.net special-characters


    【解决方案1】:

    我相信在这种情况下最好使用 Server.UrlEncode。这是一个链接http://msdn.microsoft.com/en-us/library/zttxte6w(v=vs.100).aspx

    【讨论】:

    • Server.UrlEncode 还会更改 URL 中的 /,这会破坏每张图片。
    【解决方案2】:

    在图像名称上使用 HttpServerUtility.HtmlEncode。见http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx

    【讨论】:

    • 我无法在静态上下文中访问它。这发生在单击按钮时。使用Server.HtmlEncode 也不起作用。
    • 图像仍然损坏。图片网址现在是<img src="/OCDB/_resources/game_icon/Beyond%20-%20Good%20&%20Evil_1.png" style="width:50px;border-width:0px;">
    • 是的,正如@Timur 所建议的那样使用 HttpUtility.UrlEncode。抱歉,我有一个高级的时刻。
    • 如果我使用它,则不会显示任何图像。 <img src="%2fOCDB%2f_resources%2fgame_icon%2fBionic+Commando+Rearmed_1.png" style="width:50px;border-width:0px;">这张图片一直有效到UrlEncode
    • 大概你需要在路径的每个单独组件上运行 UrlEncode,比如string.Join("/", path.Split('/').ToList().Select(p => Server.UrlEncode(p)))
    【解决方案3】:

    我发现这只是一个A potentially dangerous Request.Path value was detected from the client 错误。

    使用

    <system.web>
        <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,:,\,?" />
    </system.web>
    

    修复所有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-06
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2020-06-11
      • 2015-03-15
      相关资源
      最近更新 更多