【问题标题】:illegal characters in Path.CombinePath.Combine 中的非法字符
【发布时间】:2013-03-03 10:21:01
【问题描述】:

我的 ftp 路径如下所示:
ftp://my|user|name:mypassword@example.com/Test/file.txt

我正在尝试使用 Path:
中的两个函数 1.Path.GetDirectoryName
2.Path.Combine

两者都返回“路径中的非法字符”。
解决此问题的最佳解决方案是什么?我需要获取目录,并且需要将它与不同的文件 url 结合起来。

【问题讨论】:

  • 我认为 Path 用于磁盘(您的本地计算机)上的文件路径,而不是 URI。

标签: c# asp.net .net path ftp


【解决方案1】:

使用Uri 类提取路径部分,而不是使用Path 类来操作它。

使用UriBuilder 将其构造回来。

var fullPath = 
  new Uri(@"ftp://my|user|name:mypassword@example.com/Test/file.txt")
     .AbsolutePath;

【讨论】:

  • 感谢您的回答。但您的代码返回 /Test/file.txt 而不是 ftp://my|user|name:mypassword@example.com/Test/
  • @user194076,因为它是路径。我猜你想要别的东西(即你对“路径”的定义不是来自 [Uri RFC](www.ietf.org/rfc/rfc3986.txt) 的那个)。我相信我提到的课程应该让你以安全的方式做你想做的事。
【解决方案2】:

要从 uri 中提取路径和查询字符串,您可以使用 new Uri(someString).PathAndQuery,如答案 Get url parts without host 所示

要结合 Url 或 Uri,您可以使用答案https://stackoverflow.com/a/23399048/3481183

该答案中描述的Uri.Combine 函数也经过测试,可用于组合 ftp 部分。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2010-10-14
    • 2012-05-16
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2019-08-30
    • 2013-10-08
    相关资源
    最近更新 更多