Я сейчас играю с Paths в.Net и сталкивался с некоторыми трудностями в отношении репликации структуры локальных папок, переданной как строка из веб-службы, на мой сайт, работающий под локальным хостом в IIS Express.
По сути, наши пользователи будут выбирать изображение в нашем настольном программном обеспечении, локальный путь которого будет отправлен как свойство изображения в нашем веб-сервисе. Итак, когда мой скрипт обращается к веб-службе, он получает строку, такую как:
C:\\Users\\axumadmin\\Pictures\\axumImages\\Countries\\Canada\\canadianFlag.jpg
То, что наши пользователи будут делать, это FTP эта структура папок в указанный каталог на нашем сервере:
ServerRoot\\umbraco\\axumImages\\Countries\\Canada\\canadianFlag.jpg
Основная проблема, которую я имею здесь, заключается в том, что я не могу изменить путь, возвращенный из веб-службы, чтобы возвращать каталоги только от 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 и ее потомков?
Любая помощь будет принята с благодарностью.
использовать string.Substring
var startIndex = image.FileName.IndexOf("axumImages");
string test = image.FileName.Substring(startIndex, image.FileName.Length-startIndex)
В конце концов я решил это решить, используя синтаксический анализ строк.
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";
var startIndex = image.FileName.IndexOf("axumImages"); string test = image.FileName.Substring(startIndex, image.FileName.Length-startIndex)