У нас есть клиентское приложение C# .Net, которое отправляет некоторые команды через REST через HTTP. Сервер находится на машине Linux, написанной на Perl.C# Client - Perl server - Чувствительность к файлу - путь к файлу
Эти команды содержат пути к файлу, расположенные на сервере, которые могут быть введены пользователем. Поскольку пользователи находятся в окнах, мы хотели бы, чтобы они были нечувствительны к регистру, но это дает нам некоторые проблемы при определении местоположения сервера файлов.
Как мы можем получить правильный корпус?
У нас есть 2 возможных решения:
Используйте WinAPI вызов на клиенте, чтобы установить путь правильно обсаженных. (Эти файлы видимые в общей папке на компьютере клиентов)
Используйте некоторый PERL код на сервере, чтобы найти файл с регистронезависимым путем в качестве входных данных
Есть предложения? Мы хотели бы, чтобы это работало на всех клиентских машинах, которые являются Windows XP SP2 и выше.
ОБНОВЛЕНИЕ: Мы решили, что на стороне клиента должна быть установлена фиксированная сторона, в редком случае есть несоответствие корпуса.
Мы запускаем это, если мы получим ошибку «файл не найден» в каталоге файла. Кто-то должен был бы изменить это, чтобы работать для файлов, а также, но в нашем случае имя файла не может быть неправильно (я бы предпочел не объяснять, почему):
string FixDirectory(string fullpath)
{
return fullpath
.Split(Path.DirectorySeparatorChar)
.Skip(1)
.Select(path =>
{
string[] split = fullpath.Split(new string[] { path }, StringSplitOptions.None);
string tempDir = split[0];
string[] dirs = Directory.GetDirectories(tempDir, path);
fullpath = fullpath.Replace(Path.Combine(tempDir, path), dirs[0]);
return fullpath;
})
.Last();
}
Если кто-нибудь увидит какие-либо улучшения, которые могут быть сделаны с вышеуказанной функцией, дайте мне знать. – jonathanpeppers