将本地文件夹结构转换为服务器上的文件夹结构

时间:2014-05-22 15:11:13

标签: c# asp.net path iis-express .net

我目前正在使用.Net中的Paths,并且在复制从网络服务传递为字符串的本地文件夹结构到我在IIS Express上的localhost下运行的网站时遇到了一些困难。

基本上,我们的用户将在我们的桌面软件中选择一个图像,其本地路径将作为我们的Web服务中图像的属性发送。因此,当我的脚本访问Web服务时,它会被输入一个字符串,如:

C:\\Users\\axumadmin\\Pictures\\axumImages\\Countries\\Canada\\canadianFlag.jpg

我们的用户将做的是将此文件夹结构FTP到我们服务器上的指定目录:

ServerRoot\\umbraco\\axumImages\\Countries\\Canada\\canadianFlag.jpg

我在这里遇到的主要问题是我似乎无法修改从Web服务中检索到的路径,只能从axumImages向下返回目录。所以从本质上讲,我的本地路径将转换为:

axumImages\\Countries\\Canada\\canadianFlag.jpg

我已经尝试过使用System.IO.Path将此路径转换为我希望返回的格式,但最终我到目前为止所有实现的目标都是仅仅恢复图像文件名:

canadianFlag.jpg
System.IO.Path.GetFileName(image.FileName);

或图像的​​父目录

C:\\Users\\axumadmin\\Pictures\\axumImages\\Countries\\Canada

因此我的问题是,如何解析字符串以便它只使用axumImages及其后代?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

使用string.Substring

var startIndex = image.FileName.IndexOf("axumImages");   
string test = image.FileName.Substring(startIndex, image.FileName.Length-startIndex)

答案 1 :(得分:0)

我最后使用字符串解析来解决这个问题。

string test = image.FileName.Split(new[] { "axumImages" }, StringSplitOptions.None)[1];

在此示例中,image.Filename是我的文件名。因此,如果文件名是:

C:\\Users\\axumadmin\\Pictures\\axumImages\\Countries\\Canada\\canadianFlag.jpg

这将返回

\\Countries\\Canada\\canadianFlag.jpg

然后我可以将它连接成一个可用的变量,然后在该变量之下,这相当于我需要的路径:

var actualPath = "axumImages" + "test";