【问题标题】:Invalid URI escaping (.Net 4.5)无效的 URI 转义 (.Net 4.5)
【发布时间】:2013-12-21 11:39:20
【问题描述】:

我遵循 C# 代码 (.Net 4.5)

var bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 64;
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.UriSource = new Uri(_filename);
bi.EndInit();
bi.Freeze();
return bi;

在打开本地文件时 C:\Users\KVV\Desktop\1111111111111\Windows%20XP6.jpg

Сatch 异常 System.IO.FileNotFoundException FileName = C:\Users\KVV\Desktop\1111111111111\Windows XP6.jpg

%20 被替换为空格

如何为此类文件创建工作 URL(只需要本地文件)。 或者可以在不为本地文件创建 url 的情况下创建 BitmapImage。

【问题讨论】:

  • 您使用 wpf 或 winforms 的哪些技术
  • WPF。如果用户界面访问属性,则需要此代码才能在后台线程中加载图像。
  • 实验方法证明只有当路径包含西里尔字符和%20时才会发生错误。是否可以改变这种行为?
  • 使用HttpUtility.UrlDecode()你可以在System.Web命名空间中找到
  • HttpUtility.UrlDecode 只需替换 20% 的空间。举例说明,如果不难的话,如何调用这个函数。

标签: c# .net url encoding uri


【解决方案1】:

问题可以通过 FileStream 解决。

        using (var stream = System.IO.File.OpenRead(s))
        {
            var img1 = new BitmapImage();
            img1.BeginInit();
            img1.CacheOption = BitmapCacheOption.OnLoad;

            img1.StreamSource = stream;
            img1.EndInit();
            im1.Source = img1;
        }

但是这种行为Uri类似于bug。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多